在企业级应用中,学习了如何进行SpringBoot应用的功能开发,以及如何写单元测试、集成测试等还是不够的。在实际的软件开发中还需要:应用程序的监控和管理。SpringBoot的Actuator模块实现了应用的监控与管理。

Actuator简介

生产系统中,往往需要对系统实际运行的情况(例如cpu、io、disk、db、业务功能等指标)进行监控运维。在SpringBoot项目中Actuator模块提供了众多HTTP接口端点(Endpoint),来提供应用程序运行时的内部状态信息。

Actuator模块提供了一个监控和管理生产环境的模块,可以使用http、jmx、ssh、telnet等来管理和监控应用。包括应用的审计(Auditing)、健康(health)状态信息、数据采集(metrics gathering)统计等监控运维的功能。同时,提供了可以扩展 Actuator端点(Endpoint)自定义监控指标。这些指标都是以JSON接口数据的方式呈现。

Actuator的使用

使用Spring Boot Actuator需要加入如下依赖:

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

actuator并没有默认集成在自动配置中,而在作为独立的项目来呈现的。当引入了上面的依赖,默认会引入actuator相关的两个项目:

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

其中spring-boot-actuator为功能实现,spring-boot-actuator-autoconfigure为自动配置。

需要注意:因SpringBoot Actuator会暴露服务的详细信息,为了保障安全性,建议添加安全控制的相关依赖spring-boot-starter-security,这样在访问应用监控端点时,都需要输入验证信息。所需依赖如下:

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

关于security的使用我们在此不进行展开,可在application文件中配置相应的访问密码:

spring:   security:     user:       name: admin       password: admin

在下面的内容中为了方便,我们暂时不引入security。

经过以上步骤的操作,启动SpringBoot项目,actuator便自动集成配置了,可通过:http://localhost:8080/actuator 访问,结果如下:

{     "_links": {         "self": {             "href": "http://localhost:8080/actuator",             "templated": false         },         "health": {             "href": "http://localhost:8080/actuator/health",             "templated": false         },         "health-component": {             "href": "http://localhost:8080/actuator/health/{component}",             "templated": true         },         "health-component-instance": {             "href": "http://localhost:8080/actuator/health/{component}/{instance}",             "templated": true         },         "info": {             "href": "http://localhost:8080/actuator/info",             "templated": false         }     } }

默认支持的链接有:

/actuator /actuator/health /health/{component}/{instance} /health/{component} /actuator/info

可以在application配置文件中配置开启更多的监控信息:

management:   endpoints:     web:       exposure:         include: '*' #      base-