Spring Boot 2系列(十六):Spring Boot Admin - Actuator 监控管理 Web 框架
Spring Boot 提供了 Actuator 组件来监控应用运行情况,而 Actuator 监控的端点返回的只是 json 格式的数据,可以集成 Spring Boot Admin 框架通过 UI 来展示数据。。
Spring Boot Admin 组件包含 服务端 和 客户端,服务端提供了 Web 视图页面包含了图表,可以更方便更直观的了解应用运行情况,客户端注册到服务端。
GitHub > Spring Boot Admin ,Spring Boot Admin 2.1.4 参考指南 ,2.0.5 参考指南 ,建议多看官网技术文档。
基于 Spring Boot 2.0.x 和 spring-boot-admin-server 2.0.x版本的整合和演示。
Spring Boot Admin
Spring Boot Admin 项目为 Spring Boot 应用提供了一个管理和监控的 Web 界面,此 Web 界面是一个基于 Spring Boot 端点上的 Vue 应用。
Spring Boot Admin Server 为已注册 Spring Boot 应用提供以下功能:
- 展示应用健康状态
- 展示更多细节,如:
- JVM 和 内存 指标
- micrometer.io 指标
- 数据源指标
- 缓存指标
- 展示构建信息编号
- 关注并下载日志文件
- 查看 JVM 系统和环境属性
- 查看 Spring Boot 配置属性
- 支持 Spring Cloud 的 post 端点 /end 和 /refresh
- 简单的日志级别管理
- 与 JMX-beans 交互
- 查看线程 dump
- 查看 http-traces
- 查看 audit events
- 查看 http-endpoints
- 查看计划任务
- 查看和删除活动的 Session (使用 spring-session)
- 查看 Flyway / Liquibase 数据库迁移
- 下载 heapdump
- 状态变更通知(电子邮件,Slack,Hipchat,…)
- 状态更改的事件日志(非持久性)
服务端
新建一个独立的项目, 不包含业务处理, 只添加** Spring Boot Admin Server** 的依赖,作为一个统一的管理应用的平台; 或者在当前系统上添加 Spring Boot Admin Server 和 Clien 来集成 Spring Boot Admin。
Spring-boot-admin-server 已经包含了 spring-boot-starter-actuator 依赖包。
- 添加依赖
服务端添加admin-server依赖1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16<!-- starter web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 服务端:admin-server -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui</artifactId>
<version>2.0.0</version>
</dependency> - 添加开启管理服务注解
@EnableAdminServer
1
2
3
4
5
6
7
8
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
} - 配置管理页面映射路径
访问路径:http://127.0.0.1/admin1
spring.boot.admin.context-path=/admin
客户端
spring-boot-admin-starter-client 已经包含了 spring-boot-starter-actuator 依赖。
客户端可以是额外的单独的业务项目,作用被监控和管理的客户端,注册到服务器。
添加依赖
1
2
3
4
5
6<!-- 客户端:admin-client -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.0.0</version>
</dependency>设置应用管理监控属性
监控默认访问路径:http://127.0.0.1:8081/actuator1
2
3
4management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
management.server.port=8081
management.server.address=127.0.0.1设置 admin-server 的地址
1 | http://localhost/admin = |
注意:如果服务端配置了 spring.boot.admin.context-path ,则客户端配置服务端URL需要带上此值,如上面示例的 admin。
访问管理Web
浏览器访问服务器的管理页面:http://localhost/admin#/applications
邮件通知
Spring Boot Admin 支持配置邮件来发送邮件通知。
- 引入邮件依赖
1
2
3
4<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency> - 增加邮件服务器配置
1
2
3
4
5
6
7
8
9
10spring.mail.host=smtp.qq.com
spring.mail.username=username@xx.com
spring.mail.password=password
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
# 发送给谁
spring.boot.admin.notify.mail.to=to_admin@xxx.com
# 是谁发送出去的
spring.boot.admin.notify.mail.from=from_user@xxx.com
Spring Security
可以整合 spring-boot-starter-security 来对客户端注册和后台Web访问权限进行定制,后续再额外详解。
Spring Cloud
可以整合到 Spring Cloud 项目中,添加 spring-cloud-starter-netflix-eureka-client 依赖,用于发现和管理服务,后续再额外详解。
Spring Boot 2系列(十六):Spring Boot Admin - Actuator 监控管理 Web 框架
http://blog.gxitsky.com/2018/06/17/SpringBoot-16-spring-boot-admin/