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 应用提供以下功能:

  1. 展示应用健康状态
  2. 展示更多细节,如:
    • JVM 和 内存 指标
    • micrometer.io 指标
    • 数据源指标
    • 缓存指标
  3. 展示构建信息编号
  4. 关注并下载日志文件
  5. 查看 JVM 系统和环境属性
  6. 查看 Spring Boot 配置属性
  7. 支持 Spring Cloud 的 post 端点 /end 和 /refresh
  8. 简单的日志级别管理
  9. 与 JMX-beans 交互
  10. 查看线程 dump
  11. 查看 http-traces
  12. 查看 audit events
  13. 查看 http-endpoints
  14. 查看计划任务
  15. 查看和删除活动的 Session (使用 spring-session)
  16. 查看 Flyway / Liquibase 数据库迁移
  17. 下载 heapdump
  18. 状态变更通知(电子邮件,Slack,Hipchat,…)
  19. 状态更改的事件日志(非持久性)

服务端

新建一个独立的项目, 不包含业务处理, 只添加** Spring Boot Admin Server** 的依赖,作为一个统一的管理应用的平台; 或者在当前系统上添加 Spring Boot Admin ServerClien 来集成 Spring Boot Admin

Spring-boot-admin-server 已经包含了 spring-boot-starter-actuator 依赖包。

  1. 添加依赖
    服务端添加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>
  2. 添加开启管理服务注解@EnableAdminServer
    1
    2
    3
    4
    5
    6
    7
    8
    @Configuration
    @EnableAutoConfiguration
    @EnableAdminServer
    public class Application {
    public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
    }
    }
  3. 配置管理页面映射路径
    访问路径:http://127.0.0.1/admin
    1
    spring.boot.admin.context-path=/admin

客户端

spring-boot-admin-starter-client 已经包含了 spring-boot-starter-actuator 依赖。
客户端可以是额外的单独的业务项目,作用被监控和管理的客户端,注册到服务器。

  1. 添加依赖

    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>
  2. 设置应用管理监控属性
    监控默认访问路径:http://127.0.0.1:8081/actuator

    1
    2
    3
    4
    management.endpoints.web.exposure.include=*
    management.endpoint.health.show-details=always
    management.server.port=8081
    management.server.address=127.0.0.1
  3. 设置 admin-server 的地址

1
spring.boot.admin.client.url=http://localhost/admin

注意:如果服务端配置了 spring.boot.admin.context-path ,则客户端配置服务端URL需要带上此值,如上面示例的 admin。

访问管理Web

浏览器访问服务器的管理页面:http://localhost/admin#/applications


邮件通知

Spring Boot Admin 支持配置邮件来发送邮件通知。

  1. 引入邮件依赖
    1
    2
    3
    4
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
  2. 增加邮件服务器配置
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    spring.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

原码 -> Github

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/

作者

光星

发布于

2018-06-17

更新于

2022-06-17

许可协议

评论