SpringBoot3 Actuator使用如何以及自定义端点

参考: https://www.yuque.com/leifengyang/springboot3/wsx0br0dalot1pqn

作用: 对线上应用进行观测、监控、预警…
比如:
● 健康状况【组件状态、存活状态】Health
● 运行指标【cpu、内存、垃圾回收、吞吐量、响应成功率…】Metrics
● 链路追踪

1.使用

1.场景引入

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2.暴露指标
在application.properties里面进行设置

#暴露所有端点信息  
management.endpoints.web.exposure.include=*
#以web方式暴露  
management.endpoint.health.enabled=true

3.访问数据
● 访问 http://localhost:8080/actuator;展示出所有可以用的监控端点
● http://localhost:8080/actuator/beans
● http://localhost:8080/actuator/configprops
● http://localhost:8080/actuator/metrics
● http://localhost:8080/actuator/metrics/jvm.gc.pause
● http://localhost:8080/actuator/endpointName/detailPath

2.Endpoint

常用端点: 默认提供了各种端点,来展示应用的详细信息
包括看有多少线程及线程运行情况,生成堆dump等各种端点
参考:
https://www.yuque.com/leifengyang/springboot3/wsx0br0dalot1pqn?inner=u8Ebe

3.如何自定义端点

自定义HealthEndpoint和MetricsEndpoint

3.1 HealthEndpoint

1.自定义健康端点
例如监控一个组件的状态,存活还是死亡
方法: 实现HealthIndicator接口或者继承AbstractHealthIndicator来实现
1)实现HealthIndicator接口–>类名必须以HealthIndicator结尾,并且实现HealthIndicator接口,spring boot就能够确定这个组件是用来监控的

一句话总结下面的代码: 实现HealthIndicator接口的health方法,返回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 {@Overridepublic Health health() {int errorCode = check(); // perform some specific health checkif (errorCode != 0) {return Health.down().withDetail("Error Code", errorCode).build();}return Health.up().build();}}//构建Health
Health build = Health.down().withDetail("msg", "error service").withDetail("code", "500").withException(new RuntimeException()).build();

需要下面的配置来开启健康管理以及展示详细信息: application.properties里面进行配置:

management.endpoint.health.show-details=always

2)继承AbstractHealthIndicator来实现

例子: 自定义一个健康监控的端点来监控某个组件的健康状态
一句话总结下面的代码: 继承AbstractHealthIndicator,实现里面的doHealthCheck方法,通过builder创建好Health对象

/*** @author lfy* @Description* @create 2023-05-08 22:59** 1、实现 HealthIndicator 接口来定制组件的健康状态对象(Health) 返回* 2、*/
@Component
public class MyHahaHealthIndicator extends AbstractHealthIndicator {@AutowiredMyHahaComponent myHahaComponent; // 要检查的组件,会从容器中找,自动注入进来/*** 健康检查* @param builder* @throws Exception*/@Overrideprotected void doHealthCheck(Health.Builder builder) throws Exception {//调用组件自定义的检查方法,来检查应用的状态int check = myHahaComponent.check();if(check == 1){//存活builder.up().withDetail("code","1000").withDetail("msg","活的很健康").withDetail("data","我的名字叫haha").build();}else {//下线builder.down().withDetail("code","1001").withDetail("msg","死的很健康").withDetail("data","我的名字叫haha完蛋").build();}}
}

同样需要下面的配置来开启健康管理以及展示详细信息: application.properties里面进行配置:

management.endpoint.health.show-details=always

3.2 MetricsEndpoint

例子:自定义一个metric,来监控某个方法被调用了多少次?
总结:自定义metric是通过注入的MeterRegistry实现,实现一个有参构造方法,参数是MeterRegistry,然后通过MeterRegistry里面提供的方法来实现,比如计数器counter

@Component
public class MyHahaComponent {Counter counter = null;/*** 注入 meterRegistry 来保存和统计所有指标* @param meterRegistry*/public MyHahaComponent(MeterRegistry meterRegistry){ // 只有一个有参构造方法,参数自动从容器中找然后注入meterRegistry//得到一个名叫 myhaha.hello 的计数器//这个myhaha.hello会被展示在metrics中,通过这个指标就能得到hello方法被访问了多少次counter = meterRegistry.counter("myhaha.hello");}public  int check(){//业务代码判断这个组件是否该是存活状态return 1;}// hello被调用一次,就记一次数public void hello(){System.out.println("hello");// 调用一次就记一次数counter.increment();}
}

4.还可以整合Prometheus + Grafana来展示这些端点提供的数据

大概得步骤是: 引入Prometheus 和 Grafana的场景,分别做一些配置,设置Prometheus数据源,配置Grafana监控面板
https://www.yuque.com/leifengyang/springboot3/wsx0br0dalot1pqn

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/150693.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

拼多多官方开放平台接口app商品详情接口获取实时商品详情数据演示

拼多多开放平台提供了一种名为“商品详情接口”的API接口&#xff0c;它允许卖家从自己的系统中快速获取商品信息&#xff0c;如商品标题、描述、价格、库存等&#xff0c;并将这些信息展示在自己的店铺中。通过该接口&#xff0c;卖家可以更好地管理自己的商品库存和销售&…

投资黄金:如何选择正确的黄金品种增加收益?

黄金一直以来都是备受投资者青睐的避险资产&#xff0c;然而&#xff0c;在庞大的黄金市场中&#xff0c;选择适合自己的黄金品种成为影响收益的关键因素。黄金投资并不只有一种方式&#xff0c;而是有很多种不同的黄金品种可以选择。每种黄金品种都有其独特的特点和风险&#…

python连接hive报错:TypeError: can‘t concat str to bytes

目录 一、完整报错 二、解决 三、 其他报错 一、完整报错 Traceback (most recent call last): File "D:/Gitlab/my_world/hive2csv.py", line 18, in <module> conn hive.Connection(hosthost, portport, usernameusername, passwordpassword, data…

【HarmonyOS开发】设备调试避坑指南

备注&#xff1a;通过开发验证&#xff0c;发现每个设备调试都会存在不小的差别&#xff0c;开发验证需要注意~ 1、预览器调试&#xff08;只能预览具有Entry修饰的文件&#xff09; 修改文件&#xff0c;预览器将自动刷新 注意&#xff1a;当我们只修改了Component 组件的文件…

【Linux】套接字编程

目录 套接字 IP PORT TCP和UDP的介绍 TCP UDP 网络字节序 转换接口 UDP服务器的编写 服务器的初始化 socket bind sockaddr 结构 服务器的运行 数据的收发 业务处理 客户端的编写 运行效果 拓展 套接字 &#x1f338;首先&#xff0c;我们先思考一个问题…

【深度学习】pytorch快速得到mobilenet_v2 pth 和onnx

在linux执行这个程序&#xff1a; import torch import torch.onnx from torchvision import transforms, models from PIL import Image import os# Load MobileNetV2 model model models.mobilenet_v2(pretrainedTrue) model.eval()# Download an example image from the P…

韦东山linux驱动开发学习【常更】

1.linux目录简单介绍 2.直接运行需要在$path路径下

windows 安裝字體Font

或者直接Copy到C:\Windows\fonts 目錄下

maven 添加 checkstyle 插件约束代码规范

本例示例&#xff0c;是引用 http 链接这种在线 checkstyle.xml 文件的配置方式&#xff0c;如下示例&#xff1a; <properties><maven.checkstyle.plugin.version>3.3.0</maven.checkstyle.plugin.version><!--支持本地绝对路径、本地相对路径、HTTP远程…

用三智者交易策略澳福加减仓轻松盈利,就是这么厉害

就是这么厉害&#xff0c; 用三智者交易策略&#xff0c;澳福通过加减仓就可以在交易市场中轻松盈利。各位投资者都知道三智者交易策略的两个重要的原则。当市场超过外部极限时&#xff0c;在向上分形的高点和向下分形的低点&#xff0c;就会跟随外部方向/分形点。 fpmarkets澳…

如何使用Docker部署Apache+Superset数据平台并远程访问?

大数据可视化BI分析工具Apache Superset实现公网远程访问 文章目录 大数据可视化BI分析工具Apache Superset实现公网远程访问前言1. 使用Docker部署Apache Superset1.1 第一步安装docker 、docker compose1.2 克隆superset代码到本地并使用docker compose启动 2. 安装cpolar内网…

LLM大模型 (chatgpt) 在搜索和推荐上的应用

目录 1 大模型在搜索的应用1.1 召回1.1.1 倒排索引1.1.2 倒排索引存在的问题1.1.3 大模型在搜索召回的应用 (实体倒排索引&#xff09; 1.2 排序1.2.1 大模型在搜索排序应用&#xff08;融入LLM实体排序&#xff09; 2 大模型在推荐的应用2.1 学术界关于大模型在推荐的研究2.2 …

什么是硬分叉?硬分叉的原因是什么?硬分叉的影响是什么?

目录 什么是硬分叉? 硬分叉的原因是什么? 区块大小的改变 共识机制的修改

在vscode中使用Latex:TexLive2023

安装TexLive2023及配置vscode可参考https://zhuanlan.zhihu.com/p/166523064 然后编译模板 .tex文件时&#xff0c;出现以下几个错误&#xff1a; 1. ctexbook找不到字体集 d:/texlive/2023/texmf-dist/tex/latex/ctex/ctexbook.cls:1678: Class ctexbook Error: CTeX fo…

采用Nexus搭建Maven私服

采用Nexus搭建Maven私服 1.采用docker安装 1.创建数据目录挂载的目录&#xff1a; /usr/local/springcloud_1113/nexus3/nexus-data2.查询并拉取镜像docker search nexus3docker pull sonatype/nexus33.查看拉取的镜像docker images4.创建docker容器&#xff1a;可能出现启动…

OpenWrt环境下,由于wget不支持ssl/tls导致执行opkg update失败的解决方法

执行&#xff1a; opkg update 显示&#xff1a; wget: SSL support not available, please install one of the libustream-ssl-* libraries as well as the ca-bundle and ca-certificates packages. 提示opkg依赖的wget不支持ssl/tls。 此时需要下载支持ssl/tls的wget。但是…

为关键信息基础设施安全助力!持安科技加入关保联盟

近日&#xff0c;中关村华安关键信息基础设施安全保护联盟发布了其新一批的会员单位&#xff0c;零信任办公安全代表企业持安科技成功加入&#xff0c;与联盟企业共同为关键信息基础设施提供各类支撑和保障。 中关村华安关键信息基础设施安全保护联盟由北京市科学技术委员会、中…

软件测试面试时问你的项目经验,你知道该怎么说吗?

很简单&#xff0c;我来给你们一个公式 0 自我介绍&#xff0c;名字 学历 荣誉。 1 简述项目背景&#xff0c;你身处这个项目是做什么的。 不要太细&#xff0c;试着引导一下面试官让他提问。这样&#xff0c;请问您对此有什么疑问吗&#xff1f; 2 简述 你在项目中的角色&…

函数的极限和联系以及与数列收敛的联系

函数 极限定义:函数在 x 0 x_0 x0​处逼近 L L L,则给定任意正数 ϵ \epsilon ϵ,都有存在的 δ \delta δ使得 ∣ f ( x ) − L ∣ < ϵ , 0 < ∣ x − x 0 ∣ < δ |f(x)-L|<\epsilon, 0<|x-x_0|<\delta ∣f(x)−L∣<ϵ,0<∣x−x0​∣<δ 连续定…