4.4 运行状态监控Actuator

Spring Boot的Actuator提供了运行状态监控的功能,Actuator的监控数据可以通过REST、远程shell(1.5之后的版本弃用)和JMX方式获得。我们首先来介绍通过REST方式查看Actuator的节点的方法,这是最常见且简单的方法。

在工程的pom文件中引入Actuator的起步依赖spring-boot-starter-actuator,代码清单如下:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

在配置文件application.yml中配置management.port和management.security.enabled,这两个配置分别配置了Actuator对外暴露REST API接口的端口号和Actuator采取非安全验证方式,其代码清单如下:

management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: ALWAYS
    shutdown:
      enabled: true  
server:
    port: 9001

在上述的配置代码中指定了Actuator对外暴露REST API接口的端口为9091,如果不指定,端口为应用程序的启动端口,这样做的目的是将程序端口和程序的监控端口分开。将配置managemet.endpoints.web.exposure.include设置为“*”,暴露Actuator组件的所有节点;将配置management..endpoint.shutdown.enabled设置为“true”,开启可以通过请求来关闭程序的功能。启动工程,在控制台可以看到如下信息:

Exposing 16 endpoint(s) beneath base path '/actuator'
Tomcat started on port(s): 9001 (http) with context path ''
Tomcat started on port(s): 8082 (http) with context path ''
...

由以上的信息可知,Spring Boot的Actutor开启了16个节点,并且Actutor的监控端口为9001,应用程序的启动端口为8082。

Spring Boot Actuator的关键特性是在应用程序里提供众多的Web节点,通过这些节点可以实时地了解应用程序的运行状况。有了Actuator,你可以知道Bean在Spring应用程序上下文里是如何组装在一起的,并且可以获取环境属性的信息和运行时度量信息等。

Actuator提供了13个API接口,用于监控运行状态的Spring Boot的状况,具体如表4-1所示。需要注意的是,API接口需要加上“/actuator”前缀才能访问。

表4-1 Actuator端口信息