00:00
好,那在监控的最后,我们再来整合一个比较好玩的可视化界面,让他来展示我们所有微服务的监控数据,那这个界面呢,是一个开源项目,叫spring bootin,来点进来,这是它的官方地址,Springin get upb地址,在这一块呢,它可以做到来监控微服务里边的所有数据,这些数据呢还可以以视图的方式展现出来,那这一块呢,也有官方的一些文档,我们来参照这个quick start就行了,快速开始。那我如果我们想要完成我们整个的监控大板展示功能,我们要做的是第一步先准备一个叫spring bootin serve,这是一个服务器,那他们之间的架构呢,是这样子的,我们现在写好的微服务,在这我们给微服务暴露了AQ trar这些信息,这些信息里边有一些监控指标,接下来我们只需要准备一个叫dmin sor,相当于我们的监控服务器,接下我们监控服务器呢,会每隔一段时间去要每一个微服务的这些监控指标,把这些监控指标呢。
01:00
他来以后,他在这收集并且展示到他的大板上,那我们现在呢,就要做这个事情,那我们先来创建一个叫din server的项目,在项目里边呢,只需要导入这个admin staer server的这个场景,以及我们的这个spring boot web开发场景就行了,那我们专门来创建上一个新项目,来做这个事情,先来准备一个服务器。那这个项目呢,我们就叫com.at硅谷我们就叫boot boot0505,那我们就叫admin server吧,Min server,这是专门我们来用来监控我们这些数据的服务器,好,我们来点一个下一步,嗯,还是选中JAVA8版本。我们只需要呢,选中web开发场景,好,点击next finish,我们在新的窗口打开,然后呢,我们需要引入一个叫spring boot start web,哎,不是web,是这个springbo,我们的admin start server。
02:01
在我们的这个服务器这一块呢,我们来引入,把这些暂时没用的我们可以来删掉,好那么在我们的po文件里边,我们先来引入我们的这个人命server,那这个呢,是来作为我们监控服务器的,我们让它自动导入,好,那等它全部自动导入成功,我们接下来在这来准备一个配置,我们看一下啊,除了引这个外,我们还需要在我们主配置类上写一个叫enable的in serve,先开启我们服务监控的功能,我们在这准备一个注解,这个注解呢就叫enabledmin server,那我们来开启的整个admin监控功能,这个监控功能开启以后呢,我接下来就可以启动那监控服务器,那在启动之前呢,我们做这么一个设置,因为这呢有一个微服务,它已经占用了8080端口,所以呢,为了启动防止我们冲突,我们只需要给我们当前这个服务改一下端口,比如呢,我就叫888,然后呢,我们来启动我们的这个服务。
03:02
那我们现在呢,就准备了一个admi这个服务器。这个服务器呢,是专门来收集其他微服务监控数据的。我们不妨来访问一下,看它是什么效果,Logo house888,好,我们发现呢,这是一个监控页,这有我们的应用墙,只要有一个应用上线,健康上线以后呢,在这儿就会有展示,包括我们这个应用数,当前呢,有几个应用,几个实例,是不是全部都是OK的,哪一个有问题呢?它将来也会在这一块列表展示,那我们就来看一下,那我们现在呢,这个DMI serve准备好了,那接下来我们的这些微服务该怎么样给他们把这个数据弄过去,来参照我们这个官方文档,这块准备好以后呢,接下来就是注册我们客户端,怎么注册呢?我们只需要在我们的客户端里边引入一个叫starter client或,然后呢再来引入一个security安全开发场景,我们现在呢,不用引安全开发场景,我们直接用来简单测试就行,好来到我们的这个webin里边,我们要做的第一步,因为我们呢,作为一个客户端,我们客户端的这个数据最终呢,要被服务器收集的,所以我们引入一个叫s BOO means start客。
04:15
啊,引完了以后呢,我们看我们只需要配一个在配置文件里边配一个叫spring boomin client URL,相当于我们客户端的URL地址,也就是说这一块填写的就是我们这个客户端要把我们的数据汇报给哪个服务器,所以要填的是我们admin server的地址,我们就在配置文件这一块,好,配置文件这一块呢,我们来配一个叫adin第2URL是吗?那就是这个through boatdin client URL,那这块的URL呢,填写的就是local house,因为我们的这个in server是888,所以我们来填写8888,那它的这些指标数据呢,就会被888这一块来进行收集,那另外我们未了能收集所有的数据,那我就默认把所有的监控端点我们都来打开,并且呢以web方式暴所有端点,大家注意,我下边呢,是以web方式来暴露所有端点,那么这个准备好了以后呢,如果我们引入了spring security一些安全框架,我们要得。
05:15
会把这些东西,把我们所有的这个请求呢,要放行,要不然我们可能收集不到一些数据,我们发请求的时候呢,被安全给控制,所以我们现在没有引安全框架这一块代码就不用写,那么接下来直接来启动我们这个应用does不无web的命不离开来启动我们客户端应用。我们看一下会是什么样的效果。这个呢是我们的服务器,我们服务器在这儿呢,这我们启动了这个应用,我们在服务器这儿呢,我们不妨刷新一下,来看一下我们的这个应用有没有上线,好,哎,我们这个应用呢,自动上线,但是呢,它在这监控的是离线,那离线的原因是什么?我们也可以来看一下,包括应用墙里边,我们有上线的人在这呢,大家都能点到一线的原因,他说这个是timeout exception说我们呢,不能发现我们的这个信号在这个十十秒以内,我们这个相当于这个服务的数据没找到,我们看一下服务器有没有什么报错,哎,我们这个收集数据的服务器报错了,这个报错的原因是我们这个信号收集有问题,有问题的原因,他说fail to resolve啊,我们这个解析这个东西失败,叫no host exception,虽然他不知道这个主机地址,因为呢,它这一块服务上线以后,大家注意啊,我们这个服务上线以后呢,首先它的名字叫spring BOO application,我们先把名字改一下。
06:43
第二个我们看服务的地址是我当前本机的计算机名加上8080,而这个计算机名呢,它不能当为域名解析到我本地本机,所以呢,我可以在这做这么两项配置,那一项配置呢,在我们这个boot的命里边,我们猜呢,有一个可能叫这个东西,因为我们以前spring cloud里边,如果你服务注册不上来,你可以用它的完整IP注册,有一个叫prefer什么IP,我们来看一下,呃,我们这一块呢,有没有我们使用IP,我们直接来搜一个IP,诶这有一个prefer IP啊,我们呢还是使用IP注册,我们当前实例,我们就使用处,包括点进来我们来看一下啊,这块提示就是我们当前实例的这个注册是用server的地址还是用host name,那first的话呢,就是用host name,那默认呢,就是用地址,另外就是我们来看啊,当前应用的名,当前应用的名呢,它默认就叫spring BOO OB,所以我们注册叫它,那肯定不能叫它,我们应该叫我们当。
07:43
应用的默认名,而它这块的名字呢,是Y6,它从配置文件中取取出什么呢?Spring application的name名字,如果没有这个名字就用默认值,所以呢,我们可以很方便的在这只需要做一个设置就行了。
08:00
叫spring的application name,我们为当前应用呢起一个名好,那这个名字呢,我们就叫当前的这个名,并且呢,让他用IP注册进来,使用IP注册进来,那现在来试一下看看能不能成啊,因为之前看服务器里边解析错误的原因是它这个域名没解析,我们看拿IP能不能让它好使。稍等一下。啊,一般都会好使啊,如果还是不好使,我们来看一下原因,好好,那现在呢,看到应用数呢,已经有两个,这之前的这个老应用已经没啥用了,大家可以把这个应用呢给它剔除掉,然后我们现在呢,就剩一个应用,而且呢,大家注意我们这个应用呢,现在一直是健康状态,那我们这个全部在线,我们可以来到应用墙里边,这时就是我们当前应用,如果有多个应用,这墙里边呢,还会显示我们更多的这些六边形,那么接下来点击我们的这个应用,诶我们应用的这些信息呢,都在这展示,比如哎,我们当前应用的基本信息,那这就是英信息,这是我们健康状况,每一个组件DB up desk space up,我们自定义组件up p组件也是up,包括我们原数据信息,包括我们当前应用的进程信息,它整个进程ID是多少,CU的使用率,包括我们CPU核数,运行时间,以及我们监控的整个线程数,在这都有,包括我们来看它的性能,那性能里边呢,我们可以在这实时的添加我们想要监控的指标,比如举一个例子,我们就来想要。
09:28
好,看一下我们GC的整个暂停时间,我们这个GC呢,我们来添加一下GC的这个指标,它这一块呢统计,诶我们GC呢,暂停了三次,对吧,相当于垃圾回收了三次,总共耗时呢,0.1呃106毫秒,还有我们这个最大耗时0.078,这时我们监控了GC,如果你想还想监控其他的,比如我们这个memory use啊,我们这个内存的占用,那内存占用呢,你可以监控直接内存,还有已映射的这个对应内存,我们也可以在这来监控它的线程数,以存活的线程数等等,在这一键程一监控,这是29,包括我们还可以监监控CPU的使用率在这。
10:07
走,那这个使用率呢,所有的这些都是实时动态刷新的,那我们想要监控CPU的使用率,诶我们看这已经变化了,变化的原因我们来F12其实非常简单,就是呢,他给我们每一次就发送请求,那监控CPU的使用率,每隔一秒呢,发一个CPU的使用率请求,然后我们就去拿到我们那个客户端这个CPU使用率信息就行了,那这一块还有我们的当前环境的一些信息,以及我们一些类,我们哪些自动配置类啊,我们开启了哪些组件,这相当于就是spring bes的信息,然后呢,还有我们配置的这些属性,相当于配置文件里边哪些属性的值是多少,我们有没有定时任务,以及我们相关的日志,因为日志呢,也是我们之前说的一个监控端点,我们也可以控制,比如我们可以控制全局的日志关闭,我们直接在这儿点一个关闭,关闭,所有的日志呢,在这儿都会关闭,所以我们这一块呢,就再也不会打任何日志了,当然我们也可以在这全部打开,那现在呢,打开的是某一项,诶我们可以关闭来。
11:07
打开的是root所有日志,我们把com,的in for1打开,那com下面的所有这个in for都打开,但某一个具体项你也可以给他调整这个日志级别,那你不想要这个日志级别了,你可以重置一下就能看到,所以这是我们的日志,包括我们GVM,诶监控我们GVM的整个线程信息,这个W呢,那这一块,哎提示就是Y,像我们这个是线程正在等待R呢,那就是running,哎,那我们线程呢,正在运行期间,那还有一些线程呢在运行,哎一段时间是在等待一段时间呢,是在运运行当前整个线程的也能看到,包括呢,我们想要分析我们当前的这些线程,我们有可能还要下载当前线程的所有文件,把这个现成的所有文件内容拿来,我们还可以在这进行现成的对战分析,以及我们这个内存的转储文件,有可能我们线上出故障以后呢,我们需要拿到它的内存转属文件,看当时的这个内存快照是什怎么样的,也就说我们一的这些当铺文件,我们可以直接点击下载就能下载来。其实。
12:07
那呢,针对的就是我们以前local host 8080,我们的IQ trar,我们IQ tra项目里边呢,我们也能当MP thread dump来调用它,哎,我们可以把现成的这个文件拿过来,没问题,包括呢,我们整个的这个keep dump,对内存的这个dump走,我们也可以在这下载来,好没问题。所以呢,这一块其实都是调用我们每一个微服务自己底层的AQ try模块的,包括我们其他的映射,诶每一个这个相当于IQ try的监控端点,他们是用来干什么的?呃,谁来处理的,在这一块呢,都有,然后我们有没有缓存这块呢,就整合了我们每一个微服务的所有的监控数据,还有这一块日志报表,大家也可以看,随时呢能通过在这看到我们每一个应用的状态,它先注册上来,然后呢状态是up的没问题,然后呢,添加了一些监控端点,还有我们的整个应用的info信息改变了,然后还有这个应用叫对,然后这个应用呢。
13:07
给注销了,注销是原因是我们自己点了一个删除按钮,那这就是我们整个比较简单的一个监控面板,在这儿也能看到,我们当前应用也运行了十分钟,那其实呢,如果公司有自己的前端,也可以完全参照着这种来开发一个比较复杂的监控面板。
我来说两句