自学内容网 自学内容网

Spring Boot Actuator、Spring Boot Actuator使用、Spring Boot Actuator 监控、Spring程序监控

SpringBoot四大核心之actuator——程序监控器

1. 添加 Spring Boot Actuator 依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2. 配置 Spring Boot Actuator

# 开启所有 Actuator 端点
management:
  endpoints:
    web:
      exposure:
        include: health,metrics,info
  ## 启用 HTTP 请求计数和时间
  endpoint:
    metrics:
      enabled: true

3.查看应用的运行指标
Spring Boot Actuator 自动提供了一些监控指标,如 JVM 性能、HTTP 请求计数、数据库连接池等。你可以通过访问 Actuator 提供的 /actuator/metrics 端点来查看这些信息。

4. 查看 HTTP 请求的调用时间
Spring Boot Actuator 提供了 http.server.requests 指标,它会自动收集 HTTP 请求的计时数据,包括每个请求的持续时间、请求的数量、状态码等。
你可以访问以下 URL 来查看 HTTP 请求的调用时间和其他相关信息:
http://localhost:8080/actuator/metrics/http.server.requests

默认情况下,Actuator 会暴露一个 HTTP 端点,涉及了 JVM、HTTP 请求、Tomcat 相关性能等方面的数据,URL 为:http://localhost:8080/actuator/metrics
可以看到如下等信息:

1. HTTP 相关指标 (http.server.requests)
http.server.requests: 用于跟踪所有 HTTP 请求的统计信息(例如,请求的数量、延迟等)。
2. JVM 相关指标
jvm.buffer.count: 当前 JVM 中的缓冲区数量。
jvm.buffer.memory.used: 当前 JVM 缓冲区的已用内存。
jvm.buffer.total.capacity: 当前 JVM 缓冲区的总容量。
jvm.classes.loaded: 已加载的类数量。
jvm.classes.unloaded: 卸载的类数量。
jvm.gc.live.data.size: 当前垃圾回收堆中的数据大小。
jvm.gc.max.data.size: 最大的垃圾回收数据大小。
jvm.gc.memory.allocated: 已分配的 JVM 内存量。
jvm.gc.memory.promoted: 被提升到老年代的内存量。
jvm.gc.pause: 垃圾回收暂停时间。
jvm.memory.committed: 已提交的 JVM 内存。
jvm.memory.max: 最大可用的 JVM 内存。
jvm.memory.used: 当前已用的 JVM 内存。
jvm.threads.daemon: 当前守护线程的数量。
jvm.threads.live: 当前活动线程的数量。
jvm.threads.peak: 历史上出现的最大线程数。
jvm.threads.states: 线程的状态统计信息(例如,运行、阻塞等)。
3. 日志相关指标 (logback.events)
logback.events: 记录应用程序中的日志事件数量。
4. 进程相关指标
process.cpu.usage: 当前进程的 CPU 使用率。
process.start.time: 进程启动时间。
process.uptime: 进程的运行时间。
5. 系统相关指标
system.cpu.count: 系统的 CPU 核心数。
system.cpu.usage: 系统的 CPU 使用率。
6. Tomcat 相关指标
tomcat.cache.access: Tomcat 缓存的访问次数。
tomcat.cache.hit: Tomcat 缓存的命中次数。
tomcat.global.error: Tomcat 全局错误数。
tomcat.global.received: Tomcat 全局接收到的请求数量。
tomcat.global.request: Tomcat 全局请求数量。
tomcat.global.request.max: Tomcat 最大请求数。
tomcat.global.sent: Tomcat 全局发送的响应数量。
tomcat.servlet.error: Tomcat Servlet 错误数量。
tomcat.servlet.request: Tomcat Servlet 请求数量。
tomcat.servlet.request.max: Tomcat Servlet 最大请求数。
tomcat.threads.busy: Tomcat 正在处理请求的线程数量。
tomcat.threads.config.max: Tomcat 配置的最大线程数量。
tomcat.threads.current: 当前 Tomcat 线程数量。

Spring Boot Actuator 提供了大量有用的管理和监控端点。常用的包括:

健康检查 (/actuator/health)、度量指标 (/actuator/metrics)、日志管理 (/actuator/loggers)、线程信息 (/actuator/threaddump)、HTTP 跟踪 (/actuator/httptrace)、以及应用信息 (/actuator/info)

/actuator/beans:显示应用程序中所有的 Spring Bean
/actuator/env:显示应用程序的环境属性
/actuator/mappings:显示应用程序的 URL 映射
/actuator/trace:显示最近的 HTTP 请求跟踪信息。返回一个包含最近 HTTP 请求的 JSON 响应,包括请求方法、URL、状态码等
/actuator/auditevents:显示应用程序的审计事件
/actuator/loggers:显示和修改应用程序的日志记录器配置。返回一个包含日志记录器配置信息的 JSON 响应,可以修改日志记录器的级别。
/actuator/httptrace:显示最近的 HTTP 跟踪信息。返回一个包含最近的 HTTP 请求和响应跟踪信息的 JSON 响应,包括请求和响应头、状态码等。
/actuator/threaddump:显示应用程序的线程转储信息。返回一个包含应用程序线程转储信息的 JSON 响应,用于分析线程状态和问题


# Actuator Endpoints
# 启用所有端点,默认为true
management.endpoints.enabled-by-default=true
# 管理端点的基本路径,默认为/actuator
management.endpoints.web.base-path=/actuator
# 配置需要暴露的端点,*表示全部暴露
management.endpoints.web.exposure.include=*
# 配置需要排除的端点,如果需要排除特定端点,可以在此处指定
management.endpoints.web.exposure.exclude=
# 允许跨域访问的来源,*表示允许全部来源
management.endpoints.web.cors.allowed-origins=*
# 允许跨域访问的HTTP方法
management.endpoints.web.cors.allowed-methods=GET
 
# Health Endpoint
# 显示详细的健康状态信息,always表示始终显示
management.endpoint.health.show-details=always
 
# Info Endpoint
# 应用程序名称
info.app.name=我的应用程序
# 应用程序版本
info.app.version=1.0.0
 
# Metrics Endpoint
# 启用度量指标端点
management.endpoint.metrics.enabled=true
# 启用缓存的度量指标
management.endpoint.metrics.cache.enabled=true
# 启用默认的度量指标
management.metrics.export.defaults.enabled=true
 
# Beans Endpoint
# 启用显示所有 Spring Bean 的端点
management.endpoint.beans.enabled=true
 
# Environment Endpoint
# 启用显示应用程序环境属性的端点
management.endpoint.env.enabled=true
 
# Mappings Endpoint
# 启用显示应用程序 URL 映射信息的端点
management.endpoint.mappings.enabled=true
 
# Trace Endpoint
# 启用显示最近的 HTTP 请求跟踪信息的端点
management.endpoint.trace.enabled=true
 
# Auditevents Endpoint
# 启用显示应用程序审计事件的端点
management.endpoint.auditevents.enabled=true
 
# Loggers Endpoint
# 启用显示和修改应用程序日志记录器配置的端点
management.endpoint.loggers.enabled=true
 
# Httptrace Endpoint
# 启用显示最近的 HTTP 请求和响应跟踪信息的端点
management.endpoint.httptrace.enabled=true
 
# Threaddump Endpoint
# 启用显示应用程序线程转储信息的端点
management.endpoint.threaddump.enabled=true

yml格式:

management:
  endpoints:
    # 默认启用所有端点。启用后,Spring Boot Actuator 会暴露所有可用的监控端点。
    enabled-by-default: true

    web:
      # 设置 Actuator Web 端点的基础路径,所有 Actuator 端点将以这个路径为前缀
      base-path: /actuator

      exposure:
        # 配置暴露的端点,`*` 表示暴露所有端点
        include: "*"

        # 配置排除的端点,这里为空字符串表示没有排除任何端点
        exclude: ""

      cors:
        # 配置允许跨域的来源,这里允许所有来源
        allowed-origins: "*"

        # 配置允许的 HTTP 请求方法,`GET` 表示只允许 `GET` 请求
        allowed-methods: GET
  
  # 启用各个 Actuator 端点的配置
  endpoint:
    health:
      # 配置健康检查端点,`always` 表示无论健康检查的状态如何,都显示详细信息
      show-details: always

    info:
      # 配置应用程序信息,显示应用程序的名称和版本
      app:
        name: "我的应用程序"  # 应用程序的名称
        version: "1.0.0"      # 应用程序的版本

    metrics:
      # 启用度量指标端点,`true` 表示启用 `/actuator/metrics` 端点
      enabled: true

      cache:
        # 启用缓存度量指标,`true` 表示启用缓存相关的度量数据
        enabled: true

      export:
        # 启用度量数据导出,`true` 表示启用默认的度量数据导出配置
        defaults:
          enabled: true

    beans:
      # 启用显示所有 Spring Bean 的端点,`true` 表示启用 `/actuator/beans` 端点
      enabled: true

    env:
      # 启用显示应用程序环境配置的端点,`true` 表示启用 `/actuator/env` 端点
      enabled: true

    mappings:
      # 启用显示所有 URL 映射信息的端点,`true` 表示启用 `/actuator/mappings` 端点
      enabled: true

    trace:
      # 启用显示最近的 HTTP 请求跟踪信息的端点,`true` 表示启用 `/actuator/trace` 端点
      enabled: true

    auditevents:
      # 启用显示应用程序的审计事件的端点,`true` 表示启用 `/actuator/auditevents` 端点
      enabled: true

    loggers:
      # 启用显示和修改应用程序日志记录器配置的端点,`true` 表示启用 `/actuator/loggers` 端点
      enabled: true

    httptrace:
      # 启用显示 HTTP 请求和响应的详细跟踪信息的端点,`true` 表示启用 `/actuator/httptrace` 端点
      enabled: true

    threaddump:
      # 启用显示应用程序线程转储信息的端点,`true` 表示启用 `/actuator/threaddump` 端点
      enabled: true

trace 端点和 httptrace 端点

  • /actuator/trace:在 Spring Boot 2.x 中,trace 端点默认已经被移除,取而代之的是 httptrace 端点
@Configuration
public class HttpTraceConfig {

    @Bean
    public HttpTraceRepository httpTraceRepository() {
        return new InMemoryHttpTraceRepository();
    }
}


原文地址:https://blog.csdn.net/my_futrue/article/details/144784989

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!