- Spring Cloud实战
- 胡书敏
- 1063字
- 2021-03-24 14:06:12
1.3 通过Actuator监控Spring Boot运行情况
当我们把Spring Boot部署到服务器之后,一般需要监控微服务的运行情况:一方面,我们可以据此分析和排查问题;另一方面,我们能以此为依据优化代码。
Spring Boot里提供了spring-boot-starter-actuator模块,引入该模块后,我们能实时地监控微服务的部署和运行情况,从而能减少程序员编写监控系统模块所用的工作量。这里我们将着重讲一下常用的监控指标。
1.3.1 准备待监控的项目
新建一个基于Maven的名为SpringBootActuatorDemo的项目,启动后,再通过actuator来监控它所在站点的实时情况。
![](https://epubservercos.yuewen.com/C966B5/15289822005524206/epubprivate/OEBPS/Images/Figure-T24_32020.jpg?sign=1739019805-wTFqLYaB25WP5ae9kDbXE195OwC3UzQT-0-ae708ff3d775db3e35681bf33f02f119)
步骤01 在pom.xml加入Spring Boot和actuator的依赖包,关键代码如下:
![](https://epubservercos.yuewen.com/C966B5/15289822005524206/epubprivate/OEBPS/Images/Figure-P24_32021.jpg?sign=1739019805-Dqc0qMfcbIIN4IvKyhS42Ct7MOwPAdzA-0-ff958c13f22cc52e75d5f2c51d2b7a0a)
其中,第2~6行引入的是Spring Boot的依赖包,第7~11行引入的是actuator的依赖包,其他代码不变。
步骤02 在App.java的main函数里,同样编写启动Spring Boot的代码。
![](https://epubservercos.yuewen.com/C966B5/15289822005524206/epubprivate/OEBPS/Images/Figure-P24_32022.jpg?sign=1739019805-BEY8PYZoiOWvGfM11w9BG0CIlUDVLxJV-0-56eb9d0cd3d4b42f254f3d55a1d6177b)
步骤03 在src目录下,编写包含配置信息的application.properties文件。在Spring Boot的项目里,我们一般把配置文件放在这个目录,如图1.11所示。
![](https://epubservercos.yuewen.com/C966B5/15289822005524206/epubprivate/OEBPS/Images/Figure-P24_1690.jpg?sign=1739019805-2bVnxt6iUoHd9pe8qqH8QnHXhIfyj99j-0-dae280782041a64750c8d4dfaa530641)
图1.11 application.properties文件的一般位置
application.properties里的代码如下所示。
![](https://epubservercos.yuewen.com/C966B5/15289822005524206/epubprivate/OEBPS/Images/Figure-P24_32864.jpg?sign=1739019805-iL7fHtiCZnW4olFlSmM2zSo2cjxX35iM-0-e8c862bdfff815f51be369150d48dfe9)
其中,第1行的代码用来指定本站点(运行本项目的站点,也叫节点)无须验证,这样我们就能通过浏览器看到一些actuator给出的监控信息,第2~5行的代码用来指定本站点的信息。
编写完成后,通过App.java启动Spring Boot,随后,我们就能通过actuator查看监控信息。
1.3.2 通过/info查看本站点的自定义信息
在确保启动SpringBootActuatorDemo的情况下,在浏览器里输入“http://localhost:8080/info”,能看到如下输出信息:
![](https://epubservercos.yuewen.com/C966B5/15289822005524206/epubprivate/OEBPS/Images/Figure-P25_32024.jpg?sign=1739019805-GbZqDBV0CCKpEAMbnHSr3T9ZTx1Klaqe-0-8f97367a07daad35506c468137530d15)
其中,第2行的输出信息和我们在application.properties里配置的站点信息是一致的。
1.3.3 通过/health查看本站点的健康信息
输入“http://localhost:8080/health”,能看到如下关于本站点健康信息的输出:
![](https://epubservercos.yuewen.com/C966B5/15289822005524206/epubprivate/OEBPS/Images/Figure-P25_32025.jpg?sign=1739019805-JDAdfbVTAUveLaQV7PshjKso1v8oktAe-0-db0edd864356a814adb304b04b102398)
在第1行里,能看到本站点的状态是“UP”,也就是启动状态;在第2行里,能看到关于磁盘使用量的情况,总体来说,状态也是“UP”。
1.3.4 通过/metrics查看本站点的各项指标信息
输入“http://localhost:8080/metrics”,我们能看到关于本站点内存使用量、线程使用情况以及垃圾回收等信息,大致输出如下:
![](https://epubservercos.yuewen.com/C966B5/15289822005524206/epubprivate/OEBPS/Images/Figure-P25_32026.jpg?sign=1739019805-euwonqCsGW5wrDIpKBZ9RJFd4E48EHAB-0-5a261b449e03ea1ff3fd233f7efa73b2)
比如在上述第3行里,我们能看到空闲内存的值。这里的指标数很多,我们就不一一列出了,大家可以自己看一下。总结起来,/metrics将返回如下种类的信息:
· mem.*:描述内存使用量的信息。
· heap.*:描述虚拟机堆内存的信息。
· threads.*:描述线程使用情况的信息。
· classes.*:描述类加载和卸载的信息。
· gc.*:用来描述垃圾回收的信息。
此外,我们还能通过具体的指标名查看对应的值,比如输入“http://localhost:8080/metrics/gc.*”,就能看到垃圾回收相关指标的信息,输出如下:
1 {"gc.copy.count":60,"gc.copy.time":206,"gc.marksweepcompact.count": 2, "gc.marksweepcompact.time":97}
1.3.5 actuator在项目里的实际用法
除了刚才给出的用法外,我们还能通过/env查看当前站点的环境信息,能通过/mappings来查看当前站点的Spring MVC控制器的映射关系,能通过/beans来查看当前站点中的bean信息。
不过在项目里,我们一般不是通过浏览器来查看,而是会通过代码来定时检测,再进一步,一旦当检测到的数据低于预期就自动发警告邮件。在本书的后继部分,将给出这种做法的实际案例。