1.说明

本文详细介绍Actuator提供的HealthIndicators,
即健康指示器的配置使用,
利用自动配置的健康指标,
检查正在运行的应用程序的状态,
以及自定义健康指标的方法。
监控软件通过调用健康指示器接口,
在生产系统出现故障时发出提醒。

2.查看健康指示器

访问health端点:

http://localhost:8011/actuator/health

返回结果:

{"status": "UP"
}

3.显示详细信息

health端点公开的信息可以配置,
通过management.endpoint.health.show-details属性,
可以配置为以下值之一:

名称 描述
never 详细信息从不显示。
when-authorized 详细信息仅显示给授权用户,可以使用management.endpoint.health.roles配置授权角色。
always 详细信息显示给所有用户。

默认值为never,
所以上面返回结果显示的信息很少。

当用户处于端点的一个或多个角色时,
该用户被视为已被授权。
如果端点没有配置授权角色(默认),
则所有经过身份验证的用户都被视为已授权,
可以使用management.endpoint.health.roles配置授权角色。

下面设置show-details属性为always,
显示所有的详细信息:

management:endpoint:health:show-details: always

重启后再次访问health端点:

{"status": "UP","components": {"diskSpace": {"status": "UP","details": {"total": 2000397791232,"free": 831475470336,"threshold": 10485760,"exists": true}},"ping": {"status": "UP"}}
}

可以看到健康指示器下面多出来的两个指标,
分别为diskSpace磁盘空间和ping检查。

4.自动配置HealthIndicators

在应用程序使用到相关功能的情况下,
Spring Boot会自动配置以下HealthIndicators,
这样访问health端点的时候就能看到对应指标:

名称 描述
CassandraHealthIndicator 检查Cassandra数据库是否已启动。
CouchbaseHealthIndicator 检查Couchbase群集是否启动。
DiskSpaceHealthIndicator 检查磁盘空间是否不足。
DataSourceHealthIndicator 检查是否可以获取到DataSource的连接。
ElasticsearchHealthIndicator 检查Elasticsearch群集是否启动。
InfluxDbHealthIndicator 检查InfluxDB服务器是否启动。
JmsHealthIndicator 检查JMS代理是否启动。
MailHealthIndicator 检查邮件服务器是否启动。
MongoHealthIndicator 检查Mongo数据库是否已启动。
Neo4jHealthIndicator 检查Neo4j服务器是否启动。
RabbitHealthIndicator 检查Rabbit服务器是否启动。
RedisHealthIndicator 检查Redis服务器是否启动。
SolrHealthIndicator 检查Solr服务器是否启动。

5.配置DataSource指标

下面演示配置DataSource指标的方法,
同样的其他指标在引入相关功能后会自动配置。

在引入数据库相关的starter之后,
就会自动配置DataSource指标。
在pom.xml中新增MySQL数据库依赖:

<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

然后在application.yml中新增数据库配置:

spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://10.21.6.30:3306/demodbusername: demopassword: demo123456

重启后再次访问health端点:

{"status": "UP","components": {"db": {"status": "UP","details": {"database": "MySQL","validationQuery": "isValid()"}},"diskSpace": {"status": "UP","details": {"total": 2000397791232,"free": 831475470336,"threshold": 10485760,"exists": true}},"ping": {"status": "UP"}}
}

可以看到多出来了db指标,
连接的是MySQL数据库,
并且数据库连接是正常的。

故意将数据库的密码配置错误,
重启后再次访问health端点:

{"status": "DOWN","components": {"db": {"status": "DOWN","details": {"error": "org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Access denied for user 'demo'@'10.21.6.30' (using password: YES)"}},"diskSpace": {"status": "UP","details": {"total": 2000397791232,"free": 831475466240,"threshold": 10485760,"exists": true}},"ping": {"status": "UP"}}
}

发现db指标是DOWN状态了。

6.启用和禁用指标

默认所有指标都是启用的,
可以通过设置management.health.defaults.enabled属性来禁用,
设置为false就是禁用所有指标,
然后可以单独启用某个指标。

下面演示禁用所有指标,
仅启用db指标:

management:endpoint:health:show-details: alwayshealth:defaults:enabled: falsedb:enabled: true

重启后再次访问health端点,
就只能看到db指标了:

{"status": "UP","components": {"db": {"status": "UP","details": {"database": "MySQL","validationQuery": "isValid()"}}}
}

如果应用程序使用了数据库相关功能,
但是不想对外开放db指标,
可以单独禁用db指标:

management:endpoint:health:show-details: alwayshealth:defaults:enabled: truedb:enabled: false

7.自定义HealthIndicators方法1

要使用自定义健康信息,
可以注册实现HealthIndicator接口的Spring beans。
提供health()方法的实现并返回Health响应。
Health响应应包括状态,
并可以增加其他详细信息。

以下代码演示了一个HealthIndicator的实现,
名称为MyHealthIndicator,
这样指标名称就是my,
注意实现类的名称格式必须为XXXHealthIndicator:

package com.yuwen.spring.actuator.actuate.health;import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.stereotype.Component;@Component
public class MyHealthIndicator implements HealthIndicator {private static int num = 0;@Overridepublic Health health() {// 进行一些特定的健康检查int errorCode = check();if (errorCode != 0) {return Health.down().withDetail("Error Code", errorCode).build();}return Health.up().build();}// 这里模拟检查,设置为一次正常一次异常private int check() {num++;return num % 2;}
}

重启后访问health端点,
检查结果为异常:

{"status": "DOWN","components": {"my": {"status": "DOWN","details": {"Error Code": 1}}}
}

再次访问health端点,
检查结果为正常:

{"status": "UP","components": {"my": {"status": "UP"}}
}

如果只想显示my指标的结果:
可以修改application.yml,
禁用所有的内置指标:

management:endpoint:health:show-details: alwayshealth:defaults:enabled: false

8.修改自定义指标的名称

如果不想修改实现类的名称,
可以通过Component修改指标名称:

@Component("my1")
public class MyHealthIndicator implements HealthIndicator

这样指标名称就从my改为my1了:

{"status": "DOWN","components": {"my1": {"status": "DOWN","details": {"Error Code": 1}}}
}
{"status": "UP","components": {"my1": {"status": "UP"}}
}

9.自定义HealthIndicators方法2

通过继承AbstractHealthIndicator抽象类,
重写doHealthCheck方法,
而不是直接实现HealthIndicator接口,
功能比第一种要强大一点点,
默认的DataSourceHealthIndicator、
RedisHealthIndicator都是这种方法,
代码回调中还做了异常的处理。

以下代码演示了一个AbstractHealthIndicator的继承类,
名称为My2HealthIndicator,
这样指标名称就是my2:

package com.yuwen.spring.actuator.actuate.health;import org.springframework.boot.actuate.health.AbstractHealthIndicator;
import org.springframework.boot.actuate.health.Health.Builder;
import org.springframework.stereotype.Component;@Component
public class My2HealthIndicator extends AbstractHealthIndicator {private static int num = 0;@Overrideprotected void doHealthCheck(Builder builder) throws Exception {int errorCode = check();if (errorCode != 0) {builder.down().withDetail("code", errorCode).withDetail("num", num).build();return;}builder.up().withDetail("code", errorCode).withDetail("num", num).build();}// 这里模拟检查,设置为一次成功一次失败private int check() {num++;return num % 2;}
}

重启后访问health端点,
检查结果为异常:

{"status": "DOWN","components": {"my1": {"status": "DOWN","details": {"Error Code": 1}},"my2": {"status": "DOWN","details": {"code": 1,"num": 1}}}
}

再次访问health端点,
检查结果为正常:

{"status": "UP","components": {"my1": {"status": "UP"},"my2": {"status": "UP","details": {"code": 0,"num": 2}}}
}

10.参考文档

Spring Boot Actuator: Production-ready Features
Spring Boot (27) actuator服务监控与管理


http://www.taodudu.cc/news/show-1250980.html

相关文章:

  • gRPC创建Java RPC服务
  • ProtoBuf3语法指南(Protocol Buffers)_上
  • ProtoBuf3语法指南(Protocol Buffers)_下
  • gPRC基本介绍
  • Log4j2日志框架集成Slf4j日志门面
  • XML解析的四种方式
  • XML解析和创建的JAXB方式
  • 【转载】JSON介绍
  • Elasticsearch单机安装Version7.10.1
  • Drools创建Maven工程
  • Java二、八、十、十六进制介绍
  • Drools集成SpringBoot
  • Drools集成SpringBootStarter
  • Jsonschema2pojo从JSON生成Java类(Maven)
  • YangTools从YANG生成Java类(Maven)
  • GitBash添加tree命令
  • SpringBoot集成Maven工程
  • SpringBoot开发Restful接口
  • Notepad++便签模式
  • SpringBoot集成Cache缓存(Ehcache缓存框架,注解方式)
  • PowerDesigner生成数据库刷库脚本
  • PowerDesigner生成数据库设计文档
  • Eclipse配置国内镜像源
  • PingInfoView批量PING工具
  • Git合并两个不同的仓库
  • Guava事件处理组件Eventbus使用入门
  • Junit4集成到Maven工程
  • Redis集成到Maven工程(Jedis客户端)
  • SpringBoot集成Cache缓存(Redis缓存,RedisTemplate方式)
  • Junit5集成到Maven工程

SpringBoot集成Actuator健康指示器health相关推荐

  1. SpringBoot集成Actuator端点配置

    1.说明 Actuator端点可以监控应用程序并与之交互. Spring Boot包括许多内置的端点, 比如health端点提供基本的应用程序运行状况信息, 并允许添加自定义端点. 可以控制每个单独的 ...

  2. SpringBoot集成Actuator监控管理

    1.说明 本文详细介绍Spring Boot集成Actuator监控管理的方法, 基于已经创建好的Spring Boot工程, 然后引入Actuator依赖, 介绍监控管理相关功能的使用. Sprin ...

  3. springboot集成Actuator

    Actuator监控端点,主要用来监控与管理. 原生端点主要分为三大类:应用配置类.度量指标类.操作控制类. 应用配置类:获取应用程序中加载的配置.环境变量.自动化配置报告等与SpringBoot应用 ...

  4. Springboot使用Actuator健康监控以及可视化界面

    前言 我们的微服务在云上部署以后都需要对其进行监控.追踪.审计.控制等.SpringBoot就抽取了Actuator场景,使得我们每个微服务快速引用即可获得生产级别的应用监控.审计等功能. DEMO ...

  5. springboot 集成 actuator

    简介 spring-actuator做度量统计收集,使用Prometheus(普罗米修斯)进行数据收集,Grafana(增强ui)进行数据展示,用于监控生成环境机器的性能指标和业务数据指标.一般,我们 ...

  6. SpringBoot集成MyBatis-Plus代码生成器(Dao)

    1.说明 本文基于SpringBoot集成MyBatis-Plus代码生成器, 把原来生成Entity.Mapper.Mapper XML.Service.Controller等各个模块的代码, 修改 ...

  7. SpringBoot集成MyBatis-Plus代码生成器

    1.说明 本文详细介绍Spring Boot集成MyBatis-Plus代码生成器的方法. 基于一个创建好的Spring Boot工程, 执行MyBatis-Plus提供的AutoGenerator代 ...

  8. SpringBoot集成MyBatis-Plus自定义SQL

    1.说明 本文介绍Spring Boot集成MyBatis-Plus框架后, 基于已经创建好的Spring Boot工程, 添加自定义的SQL实现复杂查询等操作. 自定义SQL主要有两种方式, 一种是 ...

  9. SpringBoot集成MyBatis-Plus框架

    1.说明 本文介绍Spring Boot集成MyBatis-Plus框架, 重点介绍需要注意的地方, 是SpringBoot集成MyBatis-Plus框架详细方法 这篇文章的脱水版, 主要是三个步骤 ...

最新文章

  1. 博士毕业后就被双一流高校直聘为教授,这位90后“土博”是怎么做到的?
  2. Python 网络爬虫笔记1 -- Requests库
  3. 科技论文----论搜索引擎现状及发展趋势
  4. day11函数的进阶动态参数,命名空间,作用域,第一类对象
  5. 【Oracle】进阶知识进一步了解
  6. Linux软件包管理神器--YUM
  7. linux下修改文件权限.
  8. 编译OpenJDK8:Your cygwin is too old. You are running but at least cygwin 1.7 is required
  9. 数字经济的网络黑手,中科信安:勒索软件攻击比去年同期增加7倍
  10. 计算机网络安全员好就业吗,网络安全就业前景怎么样?
  11. android 连接蓝牙耳机 播放音乐,Android连接蓝牙耳机播放音乐
  12. HCIA/HCIP使用eNSP模拟MUX VLAN配置实例与MUX VLAN知识总结(VLAN隔离技术之MUX VLAN)
  13. nandflash oob解析
  14. 基于BM1684移植YOLOV7
  15. Android 布局旋转 横屏竖屏
  16. 史上绝地反击,美式英语英文学习大全。美国英语最新词频表
  17. 再讲卷积的本质及物理意义,解释的真幽默!
  18. MD5算法的编程实现
  19. 计算机条件函数ppt,EXCEL常用函数教程PPT讲课课件_计算机硬件及应用_IT/计算机_资料(2)...
  20. SSLHandshakeException: No appropriate protocol

热门文章

  1. __RESTRICT修改为__RRSTRICT,程序闪退。
  2. Redis安装及配置(Linux)
  3. 将语音搜索集成到Google Now中
  4. 【UML建模】UML类图几种关系的总结
  5. Javascript 的函数式对象(三)利用闭包模拟类的静态变量和方法
  6. What's the QPSK?
  7. 回首我的2007 12/25
  8. 7-27 冒泡法排序 (20 分)
  9. mysql zpi版的如何配置_Mysql zip版 安装配置
  10. 使用函数输出水仙花数