前言
Spring Boot Admin 是一个管理和监控 Spring Boot 应用程序的开源项目,它提供了一个简洁的 Web 界面来监控 Spring Boot 应用程序的状态和各种运行时指标。Spring Boot Admin 可以帮助开发者快速了解应用程序的状态,并快速定位错误或性能问题。下面是 Spring Boot Admin 的一些主要特点:
1. 界面友好:Spring Boot Admin 提供了一个漂亮、干净、响应式的 Web 界面,支持数据实时更新和各种交互式组件。
2. 实时监控:Spring Boot Admin 可以实时监控应用程序的运行状态、性能指标、日志等信息,并提供历史记录和图表展示。
3. 健康检查:Spring Boot Admin 可以检查应用程序的健康状况,并提供警报和通知功能。
4. 远程管理:Spring Boot Admin 可以通过远程 HTTP 调用管理和监控远程应用程序,可以方便地管理多个服务器上的应用程序。
5. 自适应:Spring Boot Admin 支持自适应布局管理,可以根据屏幕分辨率和显示器大小动态调整页面布局。
6. 支持扩展:Spring Boot Admin 提供了灵活的 API 和事件机制,开发者可以自定义添加监控指标、扩展界面、添加连接器等。
总之,Spring Boot Admin是一个功能强大、易用性强的Spring Boot应用程序管理和监控工具,非常适合用于管理和监控Spring Boot应用程序的生命周期,特别是在分布式系统和微服务架构中使用。
Spring Boot Admin 的组成
- Spring Boot Actuator:Spring Boot Actuator 是 Spring Boot 提供的一个功能强大的监控和管理扩展,用于监控应用程序的各种指标、健康状况和环境属性。Admin Client 依赖于 Spring Boot Actuator 来收集和提供应用程序的监控数据。
- Spring Boot Admin Server:Spring Boot Admin Server 是 Spring Boot Admin 的核心组件,负责提供 Web 界面和 API,以监控注册的 Spring Boot 应用程序。它是一个 Spring Boot 应用程序,通过依赖于 Spring Boot Starter Admin 自动配置。
- Spring Boot Admin Client:Spring Boot Admin Client 是需要在要监控的 Spring Boot 应用程序中集成的客户端库。它负责将应用程序的信息注册到 Spring Boot Admin Server,并暴露一些端点供 Admin Server 使用。
- Web UI(用户界面):Spring Boot Admin 提供了一个用户友好的 Web 界面,通过该界面可以查看注册的应用程序的状态、详细信息、日志和环境属性等。 界面通常包括仪表板、应用程序列表、详细信息页等。
- 事件通知:Spring Boot Admin 支持事件通知机制,可以通过事件监听器获取应用程序的状态变化、健康状态变化等事件。这使得可以通过邮件、Slack 等方式实现对应用程序状态的实时告警。
搭建Spring Boot Admin
1、Admin Server
主要依赖:
<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></dependency>
启动类添加注解:
2、Admin Client
主要依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-client</artifactId><version>2.7.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>
配置文件yml:
server:port: 8082spring:boot:admin:client:url: http://localhost:8081 #指向注册server地址
management:endpoint:health:show-details: always #健康端点总是显示详细信息endpoints:web:base-path: /high #地址映射 actuator映射成 highpath-mapping:health: heal #自定义health接口exposure:include: health,info,metrics #开放监控端口,“*”慎用
开放端点注意:
在生产环境上,为了安全考虑,通常只有一部分端点被对外开放,可以按需开放以下几个常用的端点:
/actuator/health: 健康检查端点,用于检查应用程序的健康状态。这个端点通常是必须的,可以对外开放。
/actuator/info: 信息端点,用于暴露关于应用程序的自定义信息。可以对外开放,但需要确保不会泄漏敏感信息。
/actuator/metrics: 指标端点,提供应用程序的各种指标数据(如内存使用、CPU使用等)。可以对外开放,但可以进行访问控制,只允许授权用户或服务访问。
/actuator/env: 环境变量端点,展示应用程序的环境变量信息。通常情况下,这个端点不应该对外开放,以防止泄漏敏感信息。
禁用安全防护机制:
@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().anyRequest().permitAll().and().csrf().disable();}