弹簧引导监控核心是spring-boot-starter-actuator依赖,增加依赖后,弹簧引导会默认配置一些通用的监控,比如jvm监控,类加载,健康监控等。
我们之前讲过码头工人容器的可视化监控,即监控容器的运行情况,包括CPU使用率,内存占用,网络状况以及磁盘空间等等一系列信息。同样利用SpringBoot作为微服务单元的实例化技术选型时,我们不可避免的要面对的一个问题就是如何实时监控应用的运行状况数据,比如:健康度,运行指标,日志信息,线程状况等等。本文就该问题做一点探索并记录试验过程。
致动器插件是SpringBoot原生提供的一个服务,可以通过暴露端点路由,用来输出应用中的诸多端点信息。实战一下!
砰的一声。xml中添加依赖:
& lt; dependency> & lt; groupId> org.springframework.boot & lt; artifactId> spring-boot-starter-actuator & lt;/dependency>
启动弹簧引导应用程序之后,只要在浏览器中输入端点信息就能获得应用的一些状态信息。
常用端点列举如下,可以一个个详细试一下:
-
<李>/信息应用基本信息李>
<李>/健康健康度信息李>
<李>/度量运行指标李>
<李>/env环境变量信息李>
<李>/伐木工日志相关李>
<李>/转储线程相关信息李>
<李>/跟踪请求调用轨迹李>
当然此时只能使用/健康和信息端点,其他因为权限问题无法访问。想访问指定端点的话可以在yml配置中添加相关的配置项,比如/指标端点则需要配置:
端点: 指标: 敏感:假
此时浏览器访问/指标端点就能得到诸如下面所示的信息:
{ “mem”: 71529年, “mem.free”: 15073年, “处理器”:4 ”实例。正常运行时间”:6376年, “运行时间”:9447年, “systemload。平均:-1.0, “heap.committed”: 48024年, “堆。init”: 16384年, “堆。使用”:32950年, “堆”:506816年, “nonheap.committed”: 23840年, “非堆。init”: 160年, “非堆。使用”:23506年, “非堆”:0, “线程。峰”:25日 “线程。守护进程”:23日, “线程。totalStarted”: 28日, “线程”:25日 “类”:6129年, ”类。加载”:6129年, ”类。卸载”:0, “gc.copy。数”:74年, “gc.copy。时间”:173年, “gc.marksweepcompact。数”:3, “gc.marksweepcompact。时间”:88年, “httpsession。马克斯”:1、 “httpsession。活跃”:0 }
当然也可以开启全部端点权限,只需如下配置即可:
端点: 敏感:假
由于致动器插件提供的监控能力毕竟有限,而且UI比较简陋,因此需要一个更加成熟一点的工具
SBA则是基于致动器更加进化了一步,其是一个针对致动器接口进行UI美化封装的监控工具。我们来实验一下。
首先来创建一个弹簧引导管理服务器工程作为服务端
pom.xml中加入如下依赖:
& lt; dependency> & lt; groupId> de.codecentric & lt; artifactId> spring-boot-admin-server & lt; version> 1.5.7 & lt;/dependency> & lt; dependency> & lt; groupId> de.codecentric & lt; artifactId> spring-boot-admin-server-ui & lt; version> 1.5.7 & lt;/dependency>
然后在应用主类上通过加注解来启用弹簧引导管理
@EnableAdminServer @SpringBootApplication 公开课SpringbtAdminServerApplication { 公共静态void main (String [] args) { SpringApplication.run (SpringbtAdminServerApplication.class, args); } }
启动程序,浏览器打开localhost: 8081查看春天引导管理主页面:
弹簧引导管理主页面
此应用程序时一栏空空如也,等待待监控的应用加入
创建要监控的弹簧引导应用