Spring Cloud实战
上QQ阅读APP看书,第一时间看更新

1.3 通过Actuator监控Spring Boot运行情况

当我们把Spring Boot部署到服务器之后,一般需要监控微服务的运行情况:一方面,我们可以据此分析和排查问题;另一方面,我们能以此为依据优化代码。

Spring Boot里提供了spring-boot-starter-actuator模块,引入该模块后,我们能实时地监控微服务的部署和运行情况,从而能减少程序员编写监控系统模块所用的工作量。这里我们将着重讲一下常用的监控指标。

1.3.1 准备待监控的项目

新建一个基于Maven的名为SpringBootActuatorDemo的项目,启动后,再通过actuator来监控它所在站点的实时情况。

步骤01 在pom.xml加入Spring Boot和actuator的依赖包,关键代码如下:

其中,第2~6行引入的是Spring Boot的依赖包,第7~11行引入的是actuator的依赖包,其他代码不变。

步骤02 在App.java的main函数里,同样编写启动Spring Boot的代码。

步骤03 在src目录下,编写包含配置信息的application.properties文件。在Spring Boot的项目里,我们一般把配置文件放在这个目录,如图1.11所示。

图1.11 application.properties文件的一般位置

application.properties里的代码如下所示。

其中,第1行的代码用来指定本站点(运行本项目的站点,也叫节点)无须验证,这样我们就能通过浏览器看到一些actuator给出的监控信息,第2~5行的代码用来指定本站点的信息。

编写完成后,通过App.java启动Spring Boot,随后,我们就能通过actuator查看监控信息。

1.3.2 通过/info查看本站点的自定义信息

在确保启动SpringBootActuatorDemo的情况下,在浏览器里输入“http://localhost:8080/info”,能看到如下输出信息:

其中,第2行的输出信息和我们在application.properties里配置的站点信息是一致的。

1.3.3 通过/health查看本站点的健康信息

输入“http://localhost:8080/health”,能看到如下关于本站点健康信息的输出:

在第1行里,能看到本站点的状态是“UP”,也就是启动状态;在第2行里,能看到关于磁盘使用量的情况,总体来说,状态也是“UP”。

1.3.4 通过/metrics查看本站点的各项指标信息

输入“http://localhost:8080/metrics”,我们能看到关于本站点内存使用量、线程使用情况以及垃圾回收等信息,大致输出如下:

比如在上述第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信息。

不过在项目里,我们一般不是通过浏览器来查看,而是会通过代码来定时检测,再进一步,一旦当检测到的数据低于预期就自动发警告邮件。在本书的后继部分,将给出这种做法的实际案例。