Springboot集成Actuator和SpringbootAdminServer监控 · 深入学习 · 看云
Actuator 安可忒为特尔
最近在学springclound
,然后看书的时候,学习到通过actuator
来监控springboot
应用的各项指标。又因actuator
只提供一组endpoints
(restful
接口),查看不直观,才有集成springboot admin server
来通过界面查看监控。(当然还有其他的界面监控,比如很牛逼的普罗米修斯
)
一、springboot actuator介绍
Spring Boot Actuator可以帮助你监控和管理Spring Boot应用,比如健康检查、审计、统计和HTTP追踪等。所有的这些特性可以通过JMX或者HTTP endpoints来获得。
Actuator同时还可以与外部应用监控系统整合,比如 Prometheus, Graphite, DataDog, Influx, Wavefront, New Relic等。这些系统提供了非常好的仪表盘、图标、分析和告警等功能,使得你可以通过统一的接口轻松的监控和管理你的应用。
示例:http://localhost:9101/actuator/health
{
"status": "UP",
"components": {
"db": {
"status": "UP",
"details": {
"database": "SQLite",
"result": 1,
"validationQuery": "SELECT 1"
}
},
"diskSpace": {
"status": "UP",
"details": {
"total": 250790436864,
"free": 64770326528,
"threshold": 10485760
}
},
"ping": {
"status": "UP"
},
"redis": {
"status": "UP",
"details": {
"version": "5.0.8"
}
}
}
}
二、springboot admin server介绍
Actuator功能强大,便于其他应用使用端点(只需要简单的REST调用)。但是开发人员使用时就没那么方便了。对于开发人员,有良好的交互界面会更方便浏览监控数据和管理应用。这正是Spring Boot Admin做的工作。它为actuator端点提供了良好的交互界面,并提供了额外的特性。
Spring Boot Admin不是Spring团队提供的模块,它是由Codecentric公司创建的,代码在Github上公开。
示例:
三、springboot应用集成actuator
- pom.xml里添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
actuator
相关配置
# 显示actuator详情
management.endpoint.health.show-details=always
# 解除浏览器访问路径,* 是所有,也可以指定为beans,health
management.endpoints.web.exposure.include=*
# 端点信息接口使用的端口,为了和主系统接口使用的端口进行分离
management.server.port=9101
management.server.servlet.context-path=/
四、springboot应用集成springboot admin server
分为Server
和Client
,Server
可以理解为注册中心,Client
则是将集成了actuator
的springboot应用的注册到Server
上,然后通过界面监控各项指标。
Server端
- 添加依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>${springboot.admin.version}</version>
</dependency>
</dependencies>
- 启动类上添加
@EnableAdminServer
注解
@EnableAdminServer
@SpringBootApplication
public class StartupApplication {
public static void main(String[] args) {
SpringApplication.run(StartupApplication.class,args);
}
}
- 启动后访问
Server
的端口http://127.0.0.1:9100
Client端
- 添加依赖
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>${springboot.admin.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
- 添加配置
# 显示actuator详情
management.endpoint.health.show-details=always
# 解除浏览器访问路径,* 是所有,也可以指定为beans,health
management.endpoints.web.exposure.include=*
# 端点信息接口使用的端口,为了和主系统接口使用的端口进行分离
management.server.port=9101
management.server.servlet.context-path=/
spring.application.name=card-api
# 配置spring-boot-admin服务端的地址
spring.boot.admin.client.enabled=true
spring.boot.admin.client.url=http://localhost:9100
- 启动Client端后,就能看到界面上有示例连上
五、总结
- 为了监控
springboot
应用的各项指标,才有了springboot actuator
项目。 - 为了更直观查看各项监控数据,就有了
springboot admin server
项目,其他的还有Prometheus
等 springboot admin
的Server
和Client
端都可以集成spring-security
认证,提供安全性。- 框架的版本一定要对应,不然启动的时候会出各种问题。spring和spring boot和spring cloud,以及spring boot admin的版本。可以通过mvn repo参考查看。(
- 我的版本:spring clound Hoxton.SR10 + spring boot 2.2.7 RELEASE + spring boot admin 2.2.4 )