项目作者: Mshuyan

项目描述 :
springboot 内置的生产环境监控程序;如:监控CPU使用率、内存使用率等
高级语言: Java
项目地址: git://github.com/Mshuyan/springboot-actuator.git
创建时间: 2018-06-27T10:00:42Z
项目社区:https://github.com/Mshuyan/springboot-actuator

开源协议:

下载


springboot-actuator

依赖

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-actuator</artifactId>
  4. </dependency>

此时访问http://localhost:8080/actuator/healthhttp://localhost:8080/actuator/info就可以查看一些信息了

端点

介绍

端点就是暴露监控信息的接口,默认基于actuator路由

端点 描述
auditevents 显示当前应用程序的审计事件信息
beans 显示一个应用中所有Spring Beans的完整列表
conditions 显示配置类和自动配置类(configuration and auto-configuration classes)的状态及它们被应用或未被应用的原因
configprops 显示一个所有@ConfigurationProperties的集合列表
env 显示来自Spring的 ConfigurableEnvironment的属性
flyway 显示数据库迁移路径,如果有的话
health 显示应用的健康信息(当使用一个未认证连接访问时显示一个简单的’status’,使用认证连接访问则显示全部信息详情)
info 显示任意的应用信息
liquibase 展示任何Liquibase数据库迁移路径,如果有的话
metrics 展示当前应用的metrics信息
mappings 显示一个所有@RequestMapping路径的集合列表
scheduledtasks 显示应用程序中的计划任务
sessions 允许从Spring会话支持的会话存储中检索和删除(retrieval and deletion)用户会话。使用Spring Session对反应性Web应用程序的支持时不可用。
shutdown 允许应用以优雅的方式关闭(默认情况下不启用)
threaddump 执行一个线程dump

如果使用web应用(Spring MVC, Spring WebFlux, 或者 Jersey),你还可以使用以下端点:

端点 描述
heapdump 返回一个GZip压缩的hprof堆dump文件
jolokia 通过HTTP暴露JMX beans(当Jolokia在类路径上时,WebFlux不可用)
logfile 返回日志文件内容(如果设置了logging.file或logging.path属性的话),支持使用HTTP Range头接收日志文件内容的部分信息
prometheus 以可以被Prometheus服务器抓取的格式显示metrics信息

health端点

health端点用于显示健康检查信息

健康状态

访问health端点返回的数据中的status表示健康状态,健康状态有以下几种:

状态 说明 状态码
DOWN 服务不可用 503
OUT_OF_SERVICE 服务不可用 503
UP 运行正常 200
UNKNOWN 未知状态 200

健康检查原理

  • Spring boot的健康信息都是从ApplicationContext中的各种HealthIndicator Beans中收集到的,Spring boot框架中包含了大量的HealthIndicator的实现类
  • 默认情况下,最终的spring boot应用的状态是由HealthAggregator汇总而成的,汇总的算法是:
    • 设置状态码顺序:setStatusOrder(Status.DOWN, Status.OUT_OF_SERVICE, Status.UP, Status.UNKNOWN);
    • 过滤掉不能识别的状态码。
    • 如果无任何状态码,整个spring boot应用的状态是 UNKNOWN
    • 将所有收集到的状态码按照 1 中的顺序排序。
    • 返回有序状态码序列中的第一个状态码,作为整个spring boot应用的状态。

健康检测项

  • Spring boot框架自带的 HealthIndicator 目前包括:
Name Description
CassandraHealthIndicator 检查Cassandra数据库是否启动
DiskSpaceHealthIndicator 检查磁盘空间是否不足。
DataSourceHealthIndicator 检查是否可以获得与DataSource的连接。
ElasticsearchHealthIndicator 检查Elasticsearch集群是否启动。
InfluxDbHealthIndicator 检查InfluxDB服务器是否启动。
JmsHealthIndicator 检查JMS代理是否启动。
MailHealthIndicator 检查邮件服务器是否启动。
MongoHealthIndicator 检查Mongo数据库是否启动。
Neo4jHealthIndicator 检查Neo4j服务器是否启动。
RabbitHealthIndicator 检查Rabbit服务器是否启动。
RedisHealthIndicator 检查Redis服务器是否启动。
SolrHealthIndicator 检查Solr服务器是否已启动。

自定义HealthIndicator

例程参见MyOwnHealthIndicator

配置

启用、不启用端点

  • management.endpoints.web.exposure.include

    • 作用:

      配置哪些端点启用

    • 默认值:

      health,info

    • 可设值

      所有端点,以逗号分割

      "*"代表全部启用(*是特殊字符,需要用双引号引起来)

  • management.endpoints.web.exposure.exclude

    • 作用:

      配置management.endpoints.web.exposure.include配置的启用的端点中哪些端点被排除掉(不启用),一般只有management.endpoints.web.exposure.include配置为"*"时才配置该项

    • 默认值

    • 可设值

      所有端点,以逗号分割

      "*"代表全部启用(*是特殊字符,需要用双引号引起来)

端口及绝对路径

以下两个配置项只作用于actuator端点,不影响应用的正常接口

  • management.server.port

    • 作用

      配置端口

    • 默认值

      8080

  • management.server.servlet.context-path

    • 作用

      配置绝对路径

    • 默认值

      /

    • 注意

      本配置项只有配置了management.server.port时才生效

单个端点配置

单个端点的配置都是management.endpoint的子配置项

health

详细健康信息显示方式
  • 配置项

    management.endpoint.health.show-details

  • 作用

    配置什么时候显示完整的健康信息

  • 可设值

    always:总是

    never:从不(默认值)

    when_authorized:向通过权限认证的用户显示

    • 不显示详细信息时返回的数据

      1. {
      2. "status": "UP"
      3. }
    • 显示详细信息时返回的数据中包含应用中使用到的健康检查项的详细信息

      1. {
      2. "status": "UP",
      3. "details": {
      4. "diskSpace": {
      5. "status": "UP",
      6. "details": {
      7. "total": 121123069952,
      8. "free": 53021790208,
      9. "threshold": 10485760
      10. }
      11. }
      12. }
      13. }
启用禁用健康检查项
  • management.health.defaults.enabled

    • 作用

      启用禁用所有检测项

    • 默认值

      true(启用)

  • management.health.xxxx.enabled

    • 作用

      单独禁用启用某个健康检测项

    • 默认值

      true(启用)

    • 说明

      本配置项优先级高于management.health.defaults.enabled