问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Spring Boot Actuator项目监控详解

创作时间:
作者:
@小白创作中心

Spring Boot Actuator项目监控详解

引用
CSDN
1.
https://blog.csdn.net/YikunWu/article/details/143268637

Spring Boot Actuator是Spring Boot框架中用于监控和管理应用的重要组件,它提供了丰富的端点(Endpoints)来获取应用的健康状态、性能指标、日志信息等。本文将详细介绍Actuator的使用方法,并展示如何通过Spring Boot Admin进行可视化监控。

1. Actuator 监控应用程序

要启用Actuator的端点,只需在项目中引入Actuator的依赖:

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

启动应用后,可以通过以下默认暴露的HTTP端点进行访问:

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

默认情况下,应用使用8080端口,访问http://localhost:8080/actuator/health会显示应用的健康状态:

{"status":"UP"}

2. Actuator Endpoints

Actuator的核心功能是提供各种端点,用于监控和管理应用的运行时状态。以下是一些常用的端点及其功能:

2.1 端点列表

ID
描述
auditevents
暴露审核事件信息
beans
显示所有Spring Bean的列表
caches
显示可用的缓存
conditions
显示自动配置条件信息
configprops
显示所有@ConfigurationProperties
env
显示环境属性
flyway
显示Flyway数据库迁移
health
显示应用健康信息
httptrace
显示HTTP请求追踪信息
info
显示应用信息
integrationgraph
显示Spring Integration图
loggers
显示和修改日志配置
liquibase
显示Liquibase数据库迁移
metrics
显示应用指标
mappings
显示所有@RequestMapping路径
scheduledtasks
显示计划任务
sessions
管理用户会话
shutdown
使应用正常关闭(默认禁用)
startup
显示应用启动步骤数据
threaddump
执行线程转储

对于Web应用,还可以使用以下附加端点:

ID
描述
heapdump
返回hprof堆转储文件
jolokia
通过HTTP暴露JMX bean
logfile
返回日志文件内容
prometheus
以Prometheus格式公开指标

2.2 暴露所有 Endpoints

默认情况下,Web应用只暴露部分端点。要暴露所有端点,可以在application.yml中进行如下配置:

endpoints:
  web:
    exposure:
      include: '*'

2.3 默认开启所有监控端点&打开/关闭 Actuator Endpoint

要关闭默认开启的所有监控端点,可以在application.yml中进行如下配置:

management:
  endpoints:
    enabled-by-default: false

此时,通过Web访问只能看到/actuator端点。如果需要选择性地暴露某些端点,可以进行如下配置:

management:
  endpoints:
    enabled-by-default: false
  endpoint:
    health:
      enabled: true
    loggers:
      enabled: true
    mappings:
      enabled: true
    metrics:
      enabled: true

2.4 最常用的 Endpoint

  • Health:监控应用程序状况
  • Metrics:运行时指标
  • Loggers:日志记录
2.4.1 Health Endpoint

/actuator/health端点提供了关于应用健康的基础信息。要显示详细的健康信息,可以在application.yml中进行如下配置:

management:
  endpoint:
    health:
      show-details: always
2.4.2 Metrics Endpoint

/actuator/metrics/{name}端点展示了多个有用的度量信息,如JVM内存使用情况、系统CPU使用情况等。访问localhost:8080/actuator/metrics可以看到监控指标列表。

要获取某个度量的详细信息,可以传递度量名称到URL中,例如访问localhost:8080/actuator/metrics/jvm.memory.used

2.4.3 Loggers Endpoint

/actuator/loggers端点展示了应用的日志信息,并允许在运行时改变日志等级。例如,要获取rootlogger的细节,可以访问http://localhost:8080/actuator/loggers/root

{
   "configuredLevel":"INFO",
   "effectiveLevel":"INFO"
}

要改变日志等级,可以发送一个POST请求到http://localhost:8080/actuator/loggers/root,并传递如下参数:

{
   "configuredLevel": "DEBUG"
}
2.4.4 Info Endpoint

info端点展示了应用的基本信息,包括编译信息和Git信息。访问http://localhost:8080/actuator/info可以看到相关信息。

2.4.5 Mappings Endpoint

访问http://localhost:8080/actuator/mappings可以查看请求映射的相关信息。

2.4.6 Configprops Endpoint

3. Spring Boot Admin

Spring Boot Admin是一个开源项目,用于管理和监控Spring Boot应用程序,提供可视化的UI界面展示Actuator Endpoints的监控信息。它包括客户端(Spring Boot Admin Client)和服务端(Spring Boot Admin Server)两个角色。

3.1 Admin-Server

要创建一个Admin Server,需要完成以下步骤:

  1. 创建admin-server模块
  2. 导入依赖坐标admin-starter-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>
    </dependency>
</dependencies>

配置访问端口:

# 应用名称
spring.application.name=springboot-admin-server
# 应用服务 WEB 访问端口
server.port=9000

在引导类上启用监控功能:

// 开启服务端监控
@EnableAdminServer
@SpringBootApplication
public class SpringbootAdminServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootAdminServerApplication.class, args);
    }
}

3.2 Admin-Client

要创建一个Admin Client,需要完成以下步骤:

  1. 创建admin-client模块
  2. 导入坐标依赖admin-starter-client
<dependencies>
    <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>
    </dependency>
</dependencies>

配置相关信息:

# 应用名称
spring.application.name=springboot-admin-client
# 执行admin-server的地址
spring.boot.admin.client.url=http://localhost:9000
# 暴露所有endpoints
management.endpoints.web.exposure.include=*
# 开启健康检查的完整信息
management.endpoint.health.show-details=always

同时启动server和client服务后,访问http://localhost:9000可以看到正在运行的实例:


© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号