返回 导航

SpringBoot / Cloud

hangge.com

SpringBoot - Actuator应用监控使用详解4(health端点:健康信息展示)

作者:hangge | 2020-02-17 08:10

八、健康信息基本配置

1,展示健康信息详情

(1)默认情况下,我们只能通过 health 端点获取到 status 信息,而 detail 信息是默认不显示的 :

(2)我们可以通过 management.endpoint.health.show-details 属性来配置 detail 信息的显示策略,它有如下三种可选值:
  • never:即不显示 details 信息(默认值)
  • when-authorizeddetails 信息只展示给认证用户,即用户登录后才可以查看 details 信息
  •     另外还可以通过 management.endpoint.health.roles 属性配置要求的角色,management.endpoint.health.roles=ADMIN 表示认证的用户必须具有 ADMIN 角色才能看到 details 信息
  • always:将 details 信息展示给所有用户 

(3)这里我们将 details 信息展示给所有用户:
management.endpoint.health.show-details=always

(4)再次访问 health 端口,可以看到这次多了 details 信息的显示:

2,健康指示器 

(1)默认情况下 Spring Boot 会根据 classpath 中依赖的添加情况来自动配置一些健康指示器(HealthIndicators),具体有下面这些: 
  • CassandraHealthIndicator:检查 Cassandra 数据库状况
  • DiskSpaceHealthIndicator:检查磁盘空间是否不足
  • DataSourceHealthIndicator:检查是否可以从 DataSource 获取一个 Connection
  • ElasticsearchHealthIndicator:检查 Elasticsearch 集群状况
  • InfluxDbHealthIndicator:检查 InfluxDB 服务器状况
  • JmsHealthIndicator:检查 JMS 消息代理状况
  • MailHealthIndicator:检查邮件服务器状况
  • MongoHealthIndicator:检查 Mongo 数据库状况
  • Neo4jHealthIndicator:检查 Neo4j 服务器状况
  • RabbitHealthIndicator:检查 Rabbit 服务器状况
  • RedisHealthIndicator:检查 Redis 服务器状况
  • SolrHealthIndicator:检查 Solr 服务器状况

(2)如果项目中存在相关的依赖,那么列表中对应的 HealthIndicators 将会被配置。比如我们 pom.xml 添加加了数据库、邮件服务器依赖,此时访问 health 端点,结果如下:

(3)如果我们不需要这么多 HealthIndicators,则可以通过如下配置关闭所有的 HealthIndicators 自动化配置:
management.health.defaults.enabled=false

附:自定义健康指示器 HealthInfo

1,基本配置

(1)除了 Spring Boot 自动收集的这些 HealthInfo 之外,我们也可以自定义 HealthInfo,只需要实现 HealthIndicator 接口即可:
@Component
public class MyHealth implements HealthIndicator {
    @Override
    public Health health() {
        if(Math.random() > 0.5) {
            return Health.up().withDetail("msg", "网络连接正常...").build();
        }
        return Health.down().withDetail("msg", "网络断开...").build();
    }
}

(2)配置完成后,再次访问 health 端点,结果如下:

2,增加响应状态

(1)默认的响应状态一共有 4 种:DOWNOUT_OF_SERVICEUPUNKNOWN,如果需要加增加响应状态,可以在 application.properties 种通过 management.health.status.order 属性进行配置。比如下面增加一个响应状态 FATAL
management.health.status.order=FATAL,DOWN,OUT_OF_SERVICE,UP,UNKNOWN

(2)配置完毕后,就可以在 helath 方法中返回自定义的响应状态了:
@Component
public class MyHealth implements HealthIndicator {
    @Override
    public Health health() {
        return Health.status("FATAL").withDetail("msg", "网络断开...").build();
    }
}

(3)重启项目,再次访问 health 端点,结果如下:

3,自定义响应码

(1)默认的 4 种响应状态种,UPUNKNOWNHTTP 响应码为 200DOWNOUT_OF_SERVICEHTTP 响应码为 503。而所有自行添加的响应状态对应的 HTTP 响应码都是 200,如果需要对自定义的响应状态配置响应码,添加如下配置即可:
management.health.status.http-mapping.FATAL=503

(2)重启项目,再次访问 health 端点,结果如下:
评论

全部评论(0)

回到顶部