Spring Boot运行状态监控 Actuator

Spring Boot的Actuator提供了运行状态的监控的功能,Actuator的监控数据可以通过REST、远程shell(1.5之后的版本弃用)和JMX方式获得。我们首先介绍通过REST方式查看Actuator的节点的方法,这是最常见且简单的方法。

在工程的pom文件中引入Actuator的起步依赖spring-boot-starter-actuator,代码清单如下:

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

在配置文件application.yml中配置management.portmanagement.security.enabled,这两个配置分别配置了Actuator对外暴露REST API接口的端口号和Actuator采取的非安全验证方式,其代码清单如下:

management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: always
    shutdown:
      enabled: true
  server:
    port: 9001

在上述的配置代码中指定了Actuator对外暴露的REST API接口的端口号 为 9001,如果不指定,端口为应用程序的启动端口,这样做的目的是将程序端口和程序的监控端口分开。将配置management.endpoints.web.exposure.include设置为“*”,暴露Actuator组件的所有节点;将配置management.endpoint.shutdown设置为“true”,开启可以通过请求来关闭程序的功能。启动工程,在控制台可以看到如下信息:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aznyA0zr-1582192408624)(C:\Users\DuXiaobo\AppData\Roaming\Typora\typora-user-images\1580874829607.png)]

由以上信息可知,Spring Boot的Actuator监控端口为9001.

Spring Boot的Actuator关键特性是在应用程序里提供了众多的Web节点,通过这些节点可以实时地了解应用程序的运行状况。有了Actuator,你可以知道Bean在Spring应用程序上下文里是如何组装在一起的,并且可以获取环境属性的信息和运行时度量信息等。

Actuator端口信息
类型 API端口 描述
GET /autoconfig 该端点用来获取应用的自动化配置报告,其中包括所有自动化配置的候选项。同时还列出了每个候选项自动化配置的各个先决条件是否满足。所以,该端点可以帮助我们方便的找到一些自动化配置为什么没有生效的具体原因。该报告内容将自动化配置内容分为两部分:
  • positiveMatches中返回的是条件匹配成功的自动化配置
  • negativeMatches中返回的是条件匹配不成功的自动化配
GET /configprops 描述配置属性(包含默认值)
  • prefix属性代表了属性的配置前缀
  • properties代表了各个属性的名称和值
GET /beans 描述应用程序上下文里全部的Bean,以及它们的关系
  • bean:Bean的名称
  • scope:Bean的作用域
  • type:Bean的Java类型
  • reource:class文件的具体路径
  • dependencies:依赖的Bean名称
GET /threaddump 获取线程活动的快照
GET /env 获取应用所有可用的环境属性报告。包括:环境变量、JVM属性、应用的配置配置、命令行中的参数
GET /env/{name} 根据名称获取特定的环境属性值
/env 接口还能用来获取单个属性的值,只需要在请求时在 /env 后加上属性名即可
GET /sessions 用户会话
GET /health 应用程序的健康指标
GET /info 该端点用来返回一些应用自定义的信息。默认情况下,该端点只会返回一个空的json内容
我们可以在application.properties配置文件中通过info前缀来设置一些属性
GET /auditevents 显示当前应用程序的审计事件信息
GET /conditions 显示配置类和自动配置类的状态,以及它们被应用或未被应用的原因
GET /flyway 显示数据库迁移路径
GET /liquibase 展示任何Liquibase数据迁移路径(如果存在)
GET /loggers 显示和设置Logger的级别
GET /mappings 描述全部的URI路径,以及它们和控制器(包含Actuator端点)的映射关系 罗列出应用程序发布的全部接口
  • bean属性标识了该映射关系的请求处理器
  • method属性标识了该映射关系的具体处理类和处理函数
GET /metrics 报告各种应用程序度量信息,比如内存用量、HTTP请求计数、线程信息、垃圾回收信息等
  • 系统信息:包括处理器数量processors、运行时间uptime和instance.uptime、系统平均负载systemload.average
  • mem.*:内存概要信息,包括分配给应用的总内存数量以及当前空闲的内存数量。这些信息来自java.lang.Runtime
  • heap.*:堆内存使用情况。这些信息来自java.lang.management.MemoryMXBean接口中getHeapMemoryUsage方法获取的java.lang.management.MemoryUsage
  • nonheap.*:非堆内存使用情况。这些信息来自java.lang.management.MemoryMXBean接口中getNonHeapMemoryUsage方法获取的java.lang.management.MemoryUsage
  • threads.*:线程使用情况,包括线程数、守护线程数(daemon)、线程峰值(peak)等,这些数据均来自java.lang.management.ThreadMXBean
  • classes.*:应用加载和卸载的类统计。这些数据均来自java.lang.management.ClassLoadingMXBean
  • gc.*:垃圾收集器的详细信息,包括垃圾回收次数gc.ps_scavenge.count、垃圾回收消耗时间gc.ps_scavenge.time、标记-清除算法的次数gc.ps_marksweep.count、标记-清除算法的消耗时间gc.ps_marksweep.time。这些数据均来自java.lang.management.GarbageCollectorMXBean
  • httpsessions.*:Tomcat容器的会话使用情况。包括最大会话数httpsessions.max和活跃会话数httpsessions.active。该度量指标信息仅在引入了嵌入式Tomcat作为应用容器的时候才会提供
  • gauge.*:HTTP请求的性能指标之一,它主要用来反映一个绝对数值。比如上面示例中的gauge.response.hello: 5,它表示上一次hello请求的延迟时间为5毫秒
  • counter.*:HTTP请求的性能指标之一,它主要作为计数器来使用,记录了增加量和减少量。如上示例中counter.status.200.hello: 11,它代表了hello请求返回200状态的次数为11
对于gauge.*和counter.*的统计,这里有一个特殊的内容请求star-star,它代表了对静态资源的访问。
GET /scheduledtasks 显示应用程序中的计划任务
GET /httptrace 提供基本的HTTP请求跟踪信息(时间戳、HTTP头等)。
默认情况下,跟踪信息的存储采用org.springframework.boot.actuate.trace.InMemoryTraceRepository实现的内存方式,始终保留最近的100条请求记录
GET /caches 暴露可用缓存
POST /shutdown 关闭应用程序,需要将management.endpoint.shutdown设置为true
发布了3 篇原创文章 · 获赞 0 · 访问量 19

猜你喜欢

转载自blog.csdn.net/weixin_42466157/article/details/104414930