actuator–基础–6.1–端点解析–health端点


代码位置

https://gitee.com/DanShenGuiZu/learnDemo/tree/master/actuator-learn/actuator01

1、/health 配置

1.1、当我们访问/health端点,返回是一个汇总的信息

http://127.0.0.1:8080/actuator/health

status的值有2个
1. {“status”:“UP”}
2. {“status”:“DOWN”}

1.2、查看详细的应用健康信息

1.2.1、配置

# 查看详细的应用健康信息
# never:不展示详细信息,up或者down的状态,默认配置
# when-authorized:详细信息将会展示给通过认证的用户。授权的角色可以通过management.endpoint.health.roles配置
# 对所有用户暴露详细信息
management.endpoint.health.show-details=always

1.2.2、测试

http://127.0.0.1:8080/actuator/health

从上面的应用的详细健康信息发现,健康信息包含磁盘空间、网络。

如果我们有配置redis,mysql,那么返回的信息就会有对应redis和mysql的信息,因为actuator会自动给监控起来。

1.3、自动配置的健康指示器

  1. /health端点有很多自动配置的健康指示器:如redis、rabbitmq、db等组件。
  2. 当你的项目有依赖对应组件的时候,这些健康指示器就会被自动装配,继而采集对应的信息。
  3. 如上面的 diskSpace 节点信息就是DiskSpaceHealthIndicator类在起作用。

1.4、自动配置的健康指示器 对应的实现类

当如上的组件有一个状态异常,应用服务的整体状态即为down。我们也可以通过配置禁用健康监测。

禁用某个组件的健康监测。

# 禁用mongodb组件
management.health.mongo.enabled: false

禁用所有自动配置的健康指示器

# 禁用所有自动配置的健康指示器
management.health.defaults.enabled: false

2、/health原理

  1. 默认情况下,Spring boot的健康信息都是从ApplicationContext中的各种HealthIndicator Beans汇总而成的
  2. Spring boot框架中包含了大量的HealthIndicators的实现类
  3. 你可以实现自己的健康状态。

2.1、 汇总算法

  1. 设置状态码顺序:setStatusOrder(Status.DOWN, Status.OUT_OF_SERVICE, Status.UP, Status.UNKNOWN)。
  2. 过滤掉不能识别的状态码。
  3. 如果无任何状态码,整个spring boot应用的状态是 UNKNOWN。
  4. 将所有收集到的状态码按照 1 中的顺序排序。
  5. 返回有序状态码序列中的第一个状态码,作为整个spring boot应用的状态。

2.2、 汇总算法的源代码

org.springframework.boot.actuate.health.OrderedHealthAggregator。

2.3、 Spring boot框架自带的 HealthIndicators

2.4、 禁用HealthIndicators

禁用某个组件的健康监测。

# 禁用某个(xxxx) HealthIndicators
management.health.xxxx.enabled: false

禁用所有的 HealthIndicators

# 禁用所有自动配置的健康指示器
management.health.defaults.enabled: false

3、自定义 HealthIndicator

  1. 有时候需要提供自定义的健康状态检查信息,你可以通过实现HealthIndicator的接口来实现,并将该实现类注册为spring bean。
  2. 你需要实现其中的health()方法,并返回自定义的健康状态响应信息,该响应信息应该包括一个状态码和要展示详细信息。

3.1、自定义 HealthIndicator

 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 {@Overridepublic Health health() {// 执行一些特定的监控检查int errorCode = check();if (errorCode != 0) {return Health.down().withDetail("Error Code", errorCode).build();}return Health.up().build();}// 执行一些特定的监控检查private int check() {return 0;}
}


3.2、自定义状态类型

除了Spring boot定义的几个状态类型,我们也可以自定义状态类型,用来表示一个新的系统状态。

在这种情况下,你还需要实现接口 HealthAggregator ,或者通过配置 management.health.status.order 来继续使用HealthAggregator的默认实现。

举例

在你自定义的健康检查实现类 MYHealthIndicator中,使用了自定义的状态类型FATAL,为了配置该状态类型的严重程度,你需要在application的配置文件中添加如下配置:

management.health.status.order=FATAL, DOWN, OUT_OF_SERVICE, UNKNOWN, UP

在做健康检查时,响应中的HTTP状态码反应了整体的健康状态,(例如,UP 对应200, 而 OUT_OF_SERVICE 和 DOWN 对应 503)。

同样,你也需要为自定义的状态类型设置对应的HTTP状态码,例如,下面的配置可以将 FATAL 映射为 503(服务不可用):

management.health.status.http-mapping.FATAL=503

对应代码

3.3、如果需要更多的控制

自定义自己的 HealthStatusHttpMapper bean。

3.4、内置健康状态类型对应的HTTP状态码列表

actuator--基础--6.1--端点解析--health端点相关推荐

  1. Java基础之多态深入解析

    Java基础之多态深入解析 多态的基本概念 同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性.简单的说:就是用基类的引用指向子类的对象. 多态的优点 消除类型之间的耦合关系 ...

  2. Java基础之String深入解析

    Java基础之String深入解析 以下是本文目录大纲 生成地方和地址指向,intern()方法 String可否被继承? 1. 生成地方和地址指向,intern()方法 先看代码 String s1 ...

  3. python网页结构分析_Python爬虫基础之网页组成解析

    当我们用浏览器访问网站时,每个网页的大不相同,你是否想过它为什么会呈现多种不同的样式呢?就让我们一起了解一下网页的基本组成.结构和节点等内容吧! 网页的组成 网页可以分为三大部分--HTML.CSS和 ...

  4. cisco 基础配置命令中文解析 1

    命令                                描述 <?xml:namespace prefix = o ns = "urn:schemas-microsoft- ...

  5. 2021年施工员-设备方向-通用基础(施工员)试题及解析及施工员-设备方向-通用基础(施工员)模拟试题

    题库来源:安全生产模拟考试一点通公众号小程序 安全生产模拟考试一点通:美容师(技师)试题及解析参考答案及美容师(技师)考试试题解析是安全生产模拟考试一点通题库老师及美容师(技师)操作证已考过的学员汇总 ...

  6. 2021国开计算机应用基础形考任务答案,2021电大计算机应用基础形考试题答案解析.doc...

    精编范文 第 PAGE1 页 /共 NUMPAGES1页 20__电大计算机应用基础形考试题答案解析 温馨提示:本文是笔者精心整理编制而成,有很强的的实用性和参考性,下载完成后可以直接编辑,并根据自己 ...

  7. R语言-HTML 基础与R语言解析

    ###6.1 HTML 基础与R语言解析 #额外备注:Python中的scrapy框架,爬虫 #HTML #hyper text markup language #超文本标记语言 ##6.1HTML的 ...

  8. 2020年市政方向-通用基础(质量员)答案解析及市政方向-通用基础(质量员)找答案

    题库来源:安全生产模拟考试一点通公众号小程序 2020年市政方向-通用基础(质量员)答案解析及市政方向-通用基础(质量员)找答案,包含市政方向-通用基础(质量员)答案解析答案和解析及市政方向-通用基础 ...

  9. 2021年质量员-市政方向-通用基础(质量员)最新解析及质量员-市政方向-通用基础(质量员)证考试

    题库来源:安全生产模拟考试一点通公众号小程序 质量员-市政方向-通用基础(质量员)最新解析根据新质量员-市政方向-通用基础(质量员)考试大纲要求,安全生产模拟考试一点通将质量员-市政方向-通用基础(质 ...

最新文章

  1. 也许你不知道的c#基本数据类型及其默认值
  2. nginx介绍(三) - 虚拟主机
  3. ASP.NET的地址重写“.NET研究”(URLRewriter)实现原理及代码示例
  4. 201521123032 《Java程序设计》第7周学习总结
  5. Fragment 横竖屏切换问题
  6. Linux:多进程、多线程服务器的实现解析(有图有代码有真相!!!)
  7. nginx服务器上 font awesome 字体不能正常显示
  8. js获取屏幕宽度方法大全
  9. android开发工具 go,轻松搭建基于go1.5开发Android应用的环境 | Go语言中文网 | Golang中文社区 | Golang中国...
  10. narwal机器人_Narwal云鲸扫地机器人自清洗加压拖,省心省力省时
  11. 将 PDF 文件拆分为多个同样页数 pdf 文件的 Windows Powershell 脚本
  12. 全球及中国光电传感器行业商业模式分析及投资风险预测2022年版
  13. 安 卓APP隐私政策检测自查评估
  14. HTTP-PATCH请求
  15. hadoop学习-1
  16. 记录 2015 年年初跳槽的经历!
  17. 网络调试助手-程序设计-PyQt5实战 (Python socket GUI)
  18. 用c#输出正九九乘法表_利用C#怎么输出九九乘法表
  19. Matlab中 strcmp函数使用
  20. {2018.4.21}荀(gou)彧(huo)同学的函数与排序整合

热门文章

  1. 关于IE非安全更新带来flash和ActivX不能激活的解决办法(zt)
  2. 51nod题解 1006 最长公共子序列LCS
  3. vue 获取用户位置 高德_Vue使用高德地图
  4. iGuard简单突破
  5. 永福读《天才在左,疯子在右》
  6. win7系统计算机虚拟内存不足,Win7系统虚拟内存不足的应对办法
  7. Cisco RV320未经身份验证的配置导出
  8. 股票挂钩产品的设计、定价和避险原理
  9. 种子是down.php,[原创作品][PHP]BT种子打包推送小神器~~
  10. 马丁.福勒微服务架构博文译文