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

2023-11-16

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 {
    
    @Override
    public 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状态码列表

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

actuator--基础--6.1--端点解析--health端点 的相关文章

随机推荐

  • ES6知识点总结二:解构赋值

    3 解构赋值 ES6 允许按照一定模式 从数组和对象中提取值 对变量进行赋值 这被称为解构 数组 const courseArr es6 es7 es8 const a courseArr 0 const b courseArr 1 con
  • 2023计算机毕业设计选题推荐——Java项目

    A170 536 springboot新冠物资管理系统 A171 537 基于SSM的社区疫情防控平台 A172 538 ssm民宿预订管理系统 A173 539 ssm网上水果生鲜超市商城 A174 540 ssm线上跳蚤市场平台 A17
  • C++万能头文件#include<bits/stdc++.h>

    include
  • 发放金币(循环)

    分享一下个人思路 如果拿1金币 可以拿1天 2金币拿两天 n金币拿n天 也就是说 我们要拿n金币 从当前的天数开始循环n次 每次拿n 每次拿完之后天数 1 include
  • 微信小程序之获取用户位置权限(拒绝后提醒)

    小编推荐 Fundebug专注于JavaScript 微信小程序 微信小游戏 Node js和Java实时BUG监控 真的是一个很好用的bug监控费服务 众多大佬公司都在使用 微信小程序获取用户当前位置有三个方式 1 wx getLocat
  • Google guava之Table简介说明

    转自 Google guava之Table简介说明 下文笔者讲述guava中Table集合的简介说明 如下所示 guava之Table集合简介 Table集合 用于存储数据表 类似于Map
  • 报错异常:java.lang.NoClassDefFoundError

    一 问题背景 由原先的jdk1 8升级至jdk20 启动项目登录后台出现报错问题 org springframework web util NestedServletException Handler dispatch failed nes
  • HttpClient介绍

    本文内容整理自 https blog csdn net w372426096 article details 82713315 HttpClient相比传统JDK自带的URLConnection 增加了易用性和灵活性 它不仅使客户端发送Ht
  • WIN10-22H2专业版_电脑维修人员专用装机系统镜像【04.20更新】

    WIN10 22H2专业版是由站长亲自封装的电脑维修人员专用装机系统镜像 系统干净无广告 稳定长效不卡顿 适合电脑维修店用来维修电脑重装系统 此版本是WIN10系统里非常稳定的正式版本之一 适合在维修电脑时重装系统或者大批量装机使用 本次封
  • 服务器入门

    GPU工作站 服务器 1 cdot 1 1 型号 AMD宵龙 RTX3090 为例 内存类型 REG 内存 8个DIMM DDR4插槽 3200高频内存 gt system长时间稳定运作 存储 8个 3 5英寸驱动 8块3 5存硬盘 2个N
  • C++ 11 新特性之统一初始化语法

    C 之前的初始化语法很乱 有四种初始化方式 而且每种之前甚至不能相互转换 让人有种剪不断 理还乱的感觉 曾经去面试 就有人问我string有几种初始化方式 当时就说出了两种 fuck 面试官还得意的说 你连基本的初始化方式都记不清 还做啥2
  • Qt 中 connect 函数实现信号与槽函数的连接

    目录 简介 connect 函数原型 代码示例 自定义信号和槽函数 信号和槽函数的线程安全性 总结 简介 Qt 是一个功能强大的跨平台应用程序开发框架 其提供了 connect 函数用于信号和槽的连接 实现了对象之间的通信 本文将介绍 co
  • RUST中所有权/生命周期/借用本质探讨

    本书github链接 深入RUST标准库内核 本文摘自以上链接的书籍 如果对本文中涉及的若干知识想进一步了解 请阅读此书 RUST在定义一个变量时 实际上把变量在逻辑上分成了两个部分 变量的内存块与变量内容 变量类型定义了内存块内容的格式
  • vue 源码解读

    前端基本 0基础 尝试从代码入手 不会的直接搜索就行了 成功添加页面 test33 1 在 src config menu js 源码24行增加 title Test33 name Test33 icon 2 在 src routers r
  • pycharm的git密码错误

    原文地址 https www cnblogs com wangjian941118 p 10721650 html pycharm使用gitlab输错密码解决办法 这个问题困扰我两周了 今天抱着试一试的想法 随手搜了一下 出现了新的结果 就
  • 去银行写代码是什么体验?

    最近在知乎上的一个回答火了 关于如何学习操作系统的 分享给大家 如何学会操作系统这门课程 一线互联网岗位和银行 国企还是有点区别的 这篇文章 讲详细讲一讲银行或者金融科技的相关问题 包括面试 待遇等等 虽然前阵子网传几大互联网公司都去掉了大
  • ChatGPT解决了我的出行规划焦虑

    我的五一出行规划 五一旅游季又将到来 许多人为了规划理想的行程而苦恼 需要投入相当时间来筛选各种信息 然而 现在有了Chat GPT 安排美好旅途变得异常简单 只要您告诉GPT您的日期和目的地 不到30秒就可以生成个性化的行程攻略 同时还可
  • APP兼容性测试如何测试?

    随着 APP 应用范围越来越广 用户群体越来越大 终端设备的型号也越来越多 移动终端碎片化加剧 使得 APP兼容性测试成为测试质量保障必须要考虑的环节 APP兼容性的测试主要包含系统兼容 产商ROM 兼容性 屏幕分辨率兼容 网络兼容 其他兼
  • PHP+nginx完成大文件下载处理

    最近在板子上做文件下载的处理 需求相对简单 一个下载请求过来 根据请求的数据决定给那些文件回去 于是采用了php nginx的方式来处理 尝试 nginx用来处理下载请求 拿到请求以后 调用配置好的php文件 php文件中对请求的参数做处理
  • actuator--基础--6.1--端点解析--health端点

    actuator 基础 6 1 端点解析 health端点 代码位置 https gitee com DanShenGuiZu learnDemo tree master actuator learn actuator01 1 health