上一篇文章介绍了Spring Boot Actuator的使用,Spring Boot Actuator提供了对单个Spring Boot的监控,信息包含:应用状态、内存、线程、堆栈等等,比较全面的监控了Spring Boot应用的整个生命周期。
但是这样监控也有一些问题:第一,所有的监控都需要调用固定的接口来查看,如果全面查看应用状态需要调用很多接口,并且接口返回的Json信息不方便运营人员理解;第二,如果Spring Boot应用集群非常大,每个应用都需要调用不同的接口来查看监控信息,操作非常繁琐低效。在这样的背景下,就诞生了另外一个开源软件:Spring Boot Admin。
Spring Boot Admin 是一个管理和监控Spring Boot 应用程序的开源软件。每个应用都认为是一个客户端,通过HTTP或者使用 Eureka注册到admin server中进行展示,Spring Boot Admin UI部分使用AngularJs将数据展示在前端。
Spring Boot Admin 是一个针对spring-boot的actuator接口进行UI美化封装的监控工具。他可以:在列表中浏览所有被监控spring-boot项目的基本信息,详细的Health信息、内存信息、JVM信息、垃圾回收信息、各种配置信息(比如数据源、缓存列表和命中率)等,还可以直接修改logger的level。
上面介绍了springboot admin分为server端和client端,首先介绍server端的搭建。
首先创建admin server端项目:

创建完项目,server端基本上就创建好了,不需要任何配置,接下来在启动类中加入启用admin的注解:

然后启动项目,访问对应ip和端口,可以看到admin的server端的首页:

这样server端就搭建好了。
接下来搭建client端。
首先创建admin client项目:

创建完后,加上两行配置:

然后启动client端项目。
接下来从新访问server端项目,可以看到首页内容不一样了:

多了一条监控客户端项目的相关内容。
首页会展示被监控的各个服务,点击详情可以查看某个服务的具体监控信息。

通过上图可以看出,Spring Boot Admin以图形化的形式展示了应用的各项信息,这些信息大多都来自于Spring Boot Actuator提供的接口。
如果我们使用的是单个Spring Boot应用,就需要在每一个被监控的应用中配置Admin Server的地址信息;如果应用都注册在Eureka中就不需要再对每个应用进行配置,Spring Boot Admin会自动从注册中心抓取应用的相关信息。
当多个客户端服务中有启动或者停止的时候,可以在服务端配置发送邮件提醒。首先增加邮件组件依赖:

然后在服务端增加配置:

这样,客户端项目一旦启动或者意外停止,就会收到邮件服务,邮件内容如下:


从上面可以看到,项目上线下线都能收到邮件提醒。
当然这只是最基本的邮件监控,在实际的使用过程中,需要根据我们的情况对邮件告警内容进行自定义,比如监控堆内存的使用情况,当到达一定比例的时候进行告警等。
代码地址: https://gitee.com/blueses/spring-boot-demo
网友评论