当前位置: 首页 > news >正文

sheng的学习笔记-Actuator健康监控

前言

在微服务系统里,对微服务程序的运行状况的跟踪和监控是必不可少的;例如GPE,Telegraf+influxDB都提供了微服务体系监控的方案, ZIPKIN, Skywalking都提供了微服务云体系的APM的方案; 这些解决方案功能全面;但是都需要提供额外的资源进行架构; 其实在SpringBoot构建的微服务中本身就带有了Actuator组件,能够提供相关的功能,如果我们对此要求不特别高,我们可以在自己的微服务中开启Actuator的功能即可;

Spring Boot Actuator

Spring Boot Actuator是SpringBoot框架的一个子项目。它使用HTTP的方式公开任何正在运行的应用程序的操作信息。Spring Boot Actuator直接是内嵌如我们的微服务中,可以直接从生产就绪的应用程序中获取健康和监控指标。通过Actuator,收集度量、了解流量或了解数据库状态变得非常容易。今天咱们这个文章,我们一起来看看如何使用和配置Spring Boot Actuator。

引入Actuator

在项目pom.xml文件里,引入actuator的依赖包

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

服务端点(ENDPOINT)

Spring Boot Actuator通过HTTP的方式为使用者提供了一个内置端点列表;端点列表可以展示出应用程序的操作信息;通过Actuator的技术规范,开发者可以在自己的相关组件中实现Actuator的Endpoint,而启用组件相关的端点信息;在最新版本中,默认情况下,Actuator启动后,默认启用了两个端点,/health和/info。

启动Spring Boot的应用; 根据应用的端口,在http://IP:port/context/actuator 这个地址,就可以查看到应用的Actuator信息

默认情况下,只启用health和info两个Endpoint; 我们通过exposure的配置,对可以暴露的Endpoint进行配置;

在yaml或者properties中配置

暴露部分端点

management.endpoints.web.exposure.include=info,health,beans,env

暴露所有端点

management.endpoints.web.exposure.include=*

不暴露beans端点

management.endpoints.web.exposure.exclude=beans

开启shutdown端点

用来关闭服务,开启远程关闭功能。这个很危险,默认关闭,一般情况下别开,有安全风险

上面开启所有端点也不会打开shutdown端点,需要配置文件单独配置。

management.endpoint.shutdown.enabled=true

/actuator/shutdown 只支持POST请求。

在图中出现了很多的比如:http://localhost:7500/codeman/actuator/nacosdiscovery;这是由于其他的nacos-discovery-starter扩展了自己的Endpoint;

每个这里的endpoint都可以通过http进行访问;比如: http://localhost:7500/codeman/actuator/health

查看重要度量指标信息

"metrics-requiredMetricName": {
"href": "http://localhost:8082/actuator/metrics/{requiredMetricName}",
"templated": true
},
//返回应用的各类重要度量指标信息
"metrics": {
"href": "http://localhost:8082/actuator/metrics",
"templated": false
},

先通过http://localhost:8082/actuator/metrics应用的各类重要度量指标信息。

{
"names": [
"http.server.requests",
"jvm.buffer.count",
"jvm.buffer.memory.used",
"jvm.buffer.total.capacity",
"jvm.classes.loaded",
"jvm.classes.unloaded",
"jvm.gc.live.data.size",
"jvm.gc.max.data.size",
"jvm.gc.memory.allocated",
"jvm.gc.memory.promoted",
"jvm.gc.pause",
"jvm.memory.committed",
"jvm.memory.max",
"jvm.memory.used",
"jvm.threads.daemon",
"jvm.threads.live",
"jvm.threads.peak",
"jvm.threads.states",
"logback.events",
"process.cpu.usage",
"process.start.time",
"process.uptime",
"system.cpu.count",
"system.cpu.usage",
"tomcat.sessions.active.current",
"tomcat.sessions.active.max",
"tomcat.sessions.alive.max",
"tomcat.sessions.created",
"tomcat.sessions.expired",
"tomcat.sessions.rejected"
]
}

然后通过http://localhost:8082/actuator/metrics/{requiredMetricName}查看对应指标详细数据,比如我们要查看jvm内存使用情况,就通过http://localhost:8082/actuator/metrics/jvm.memory.used查看。

系统环境变量

http://localhost:8082/actuator/env

路径映射和端口

最新版本中;默认情况所有端点都暴露在“/actuator”路径下,可以通过路径映射来修改默认的路径,这个方法也是一种比较简易的安全保护方法;把默认值换成自己的值;

配置

management.endpoints.web.base-path=/manage

通过上面的配置就把路径换成了自己的manager路径,需要使用xxxx/manage来进行访问,避免其他的外部使用者猜到路径;

也可以通过路径映射,去修改endpoint的访问路径

配置

management.endpoints.web.path-mapping.info=_info

通过上面的配置将info修改成_info

默认情况下,actuator使用和应用相同的端口;也可以配置actuator使用自己的端口

配置

management.server.port=17501

路径映射和端口保护,是最简单的安全保护的一种方法; 也可以使用spring-boot-starter-security模板的集成,来更高级的对actuator的访问进行保护

常用的Endpoint

推荐大家一定要自行去试试并查看以下Endpoint;这几个Endpoint是排查Spring Boot非常有用的Endpoint

/health 端点;应用健康信息是一个汇总的信息; management.endpoint.health.show-details=always开启详细信息

/metrics 端点;当前应用的各类重要度量指标,比如:内存信息、线程信息、垃圾回收信息、tomcat、数据库连接池等

/beans 端点;当前应用的各Bean对象的注册信息

/heapdump 端点 ;自动生成一个 当前Jvm 的堆文件 heapdump。

/threaddump 端点;当前线程的情况。 主要展示了线程名、线程ID、线程的状态、是否等待锁资源、线程堆栈等信息

Endpoint扩展(自定义)

如上图中我们看到的http://localhost:7500/codeman/actuator/nacosdiscovery;不是默认的actuator的端点,是nacos-discovery-starter扩展的Endpoint;用来对获取和知悉Nacos Discovery当前的信息; 有时候我们需要去扩展自己的Endpoint;

定义Endpoint入口

@Slf4j
@Endpoint(id = "feign-info")
@Component
public class FeignSampleEndpoint{@ReadOperationpublic FeignSampleState detailState(@Selector String[] paths){FeignSampleState state = feignSampleState;if(paths!=null){Arrays.stream(paths).forEach( one-> {state.getInfo().put(one , one );});}return state;}
}

这个就是一个简单的Endpoint定义, 通过@Endpoint(id="feign-info"),定义了一个feign-info的Endpoint, 方法@ReadOperation使用Get @DeleteOperation使用Delete协议 @WriteOperation使用Post协议

定义后就可以通过 xxxx/actuator/feign-info 来进行Endpoint的访问Endpoint了;

参考文章

https://blog.csdn.net/inthirties/article/details/126850399

https://blog.csdn.net/weixin_34628145/article/details/123188215

相关文章:

sheng的学习笔记-Actuator健康监控

前言在微服务系统里&#xff0c;对微服务程序的运行状况的跟踪和监控是必不可少的&#xff1b;例如GPE&#xff0c;TelegrafinfluxDB都提供了微服务体系监控的方案&#xff0c; ZIPKIN&#xff0c; Skywalking都提供了微服务云体系的APM的方案&#xff1b; 这些解决方案功能全面…...

初次使用ESP32-CAM记录

模块的配置和图片 摄像头&#xff1a;8225N V2.0 171026 模块esp-32s 参考资料&#xff1a;https://docs.ai-thinker.com/esp32 配置环境 参考&#xff1a;https://blog.csdn.net/weixin_43794311/article/details/128622558 简单使用需要注意的地方 基本的环境配置和串口…...

华为OD机试真题Python实现【最长连续交替方波信号】真题+解题思路+代码(20222023)

最长连续交替方波信号 题目 输入一串方波信号,求取最长的完全连续交替方波信号,并将其输出, 如果有相同长度的交替方波信号,输出任一即可,方波信号高位用1标识,低位用0标识 如图: 说明: 一个完整的信号一定以0开始然后以0结尾, 即 010 是一个完整的信号,但101,101…...

【操作系统原理实验】页面替换策略模拟实现

选择一种高级语言如C/C等&#xff0c;编写一个页面替换算法的模拟实现程序。1) 设计内存管理相关数据结构&#xff1b;2) 随机生成一个页面请求序列&#xff1b;3) 设置内存管理模拟的关键参数&#xff1b;4) 实现该页面置换算法&#xff1b;5) 模拟实现给定配置请求序列的换页…...

Java中解析XML文件

1 在Java中解析XML文件共有四种方式 A、DOM方式解析XML数据 树结构&#xff0c;有助于更好地理解、掌握&#xff0c;代码易于编写&#xff0c;在解析过程中树结构是保存在内存中&#xff0c;方便修改 B、SAX方式解析 采用事件驱动模式&#xff0c;对内存消耗比较小&#xff0…...

二点回调测买 源码

如图所示&#xff0c;两点回调测买点的效果图&#xff0c;这是我们常见的一种预测买点计算方法。 现将源码公布如下&#xff1a; DRAWKLINE(H,O,L,C); N:13; A1:REF(HIGH,N)HHV(HIGH,2*N1); B1:FILTER(A1,N); C1:BACKSET(B1,N1); D1:FILTER(C1,N); A2:REF(LOW,N)LLV(LOW,2*N1…...

钉钉端H5开发调试怎么搞

H5开发本地调试教程 作为一名前端开发,大家平时工作中或多或少都有接触或需要开发H5页面的场景,在开发过程中,如何像PC端页面一样有有丝滑的体验呢? 不同的情况需要在不同的端调试更方便有效: 1. 在画UI的时候,更适合在PC端调试,更改代码或者直接在浏览器调试,都是实…...

Mysql Server原理简介

Mysql客户端包括JDBC、 Navicat、sqlyog&#xff0c;只是为了和mysql server建立连接&#xff0c;向mysql server提交sql语句。mysql server组件第一部分叫连接器主要承担的功能叫管理连接和验证权限&#xff0c;每次在进行数据库访问的时候&#xff0c;必然要输入用户名和密码…...

23种设计模式-外观模式

外观模式是一种结构型设计模式&#xff0c;它提供了一个统一的接口&#xff0c;用来访问子系统中的一群接口。外观模式定义了一个高层接口&#xff0c;使得客户端可以更加方便地访问子系统的功能。在这篇博客中&#xff0c;我们将讨论如何使用Java实现外观模式&#xff0c;并通…...

使用 Vulkan VkImage 作为 CUDA cuArray

使用 Vulkan VkImage 作为 CUDA cuArray【问题标题】&#xff1a;Use Vulkan VkImage as a CUDA cuArray使用 Vulkan VkImage 作为 CUDA cuArray【发布时间】&#xff1a;2019-08-20 20:01:10【问题描述】&#xff1a;将 Vulkan VkImage 用作 CUDA cuArray 的正确方法是什么&am…...

电商API接口-电商OMS不可或缺的一块 调用代码展示

电商后台管理系统关键的一环就是实现电商平台数据的抓取&#xff0c;以及上下架商品、订单修改等功能的调用。这里就需要调用电商API接口。接入电商API接口后再根据自我的需求进行功能再开发&#xff0c;实现业务上的数字化管理。其中订单管理模板上需要用到如下API:seller_ord…...

Solaris ZFS文件系统rpool扩容

ZFS文件系统简介 Solaris10默认的文件系统是ufs&#xff08;Unix Filesystem&#xff09;&#xff0c;当然也可以选装zfs&#xff1b;Solaris11默认的文件系统是zfs&#xff08;Zettabyte Filesystem&#xff09;。 ZFS文件系统的英文名称为Zettabyte File System,也叫动态文件…...

模式识别 —— 第二章 参数估计

模式识别 —— 第二章 参数估计 文章目录模式识别 —— 第二章 参数估计最大似然估计&#xff08;MLE&#xff09;最大后验概率估计&#xff08;MAP&#xff09;贝叶斯估计最大似然估计&#xff08;MLE&#xff09; 在语言上&#xff1a; 似然&#xff08;likelihood&#xf…...

判断4位回文数-课后程序(Python程序开发案例教程-黑马程序员编著-第3章-课后作业)

实例1&#xff1a;判断4位回文数 所谓回文数&#xff0c;就是各位数字从高位到低位正序排列和从低位到高位逆序排列都是同一数值的数&#xff0c;例如&#xff0c;数字1221按正序和逆序排列都为1221&#xff0c;因此1221就是一个回文数&#xff1b;而1234的各位按倒序排列是43…...

【NLP】Word2Vec 介绍

Word2Vec 是一种非常流行的自然语言处理技术&#xff0c;它将每个单词表示为高维向量&#xff0c;并且通过向量之间的相似度来表示单词之间的语义关系。 1 One-Hot 编码&#x1f342; 在自然语言处理任务中&#xff0c;我们需要将文本转换为计算机可以理解的形式&#xff0c;即…...

3月6日,30秒知全网,精选7个热点

///石家庄地铁&#xff1a;在指定店铺购物金额不限 就可免费乘地铁 乘客只要在指定商铺或地铁站内36524便利店购物&#xff0c;便能得到一张当日乘车券&#xff0c;可免费乘坐地铁一次&#xff0c;不限里程 ///神州泰岳&#xff1a;公司语音机器人等产品能够进行多轮问答 公司…...

Python笔记 -- 字典

文章目录1、概述2、增删改查3、遍历3.1、遍历所有键值对3.2、分别遍历键和值4、嵌套4.1、字典列表4.2、在字典中储存列表4.3、在字典中储存字典1、概述 字典是一系列键值对&#xff0c;可将任何Python对象作为字典中的值 字典和列表容易混淆&#xff0c;列表也可用{} 字典是一…...

【独家】华为OD机试 - 滑动窗口(C 语言解题)

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明本期…...

MySQL调优 - SQL查询深度分页问题

一、问题引入 例如当前存在一张表test_user&#xff0c;然后往这个表里面插入3百万的数据&#xff1a; CREATE TABLE test_user (id int(11) NOT NULL AUTO_INCREMENT COMMENT 主键id,user_id varchar(36) NOT NULL COMMENT 用户id,user_name varchar(30) NOT NULL COMMENT 用…...

0306spring--复习

一&#xff0c;spring是什么 Spring是一个轻量级的控制反转&#xff08;IOC&#xff09;和面向切面编程&#xff08;AOP&#xff09;的容器框架 理念&#xff1a;使现有的技术更加容易使用&#xff0c;本身是一个大杂烩&#xff0c;整合了现有的技术框架 优点&#xff1…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

学习一下用鸿蒙​​DevEco Studio HarmonyOS5实现百度地图

在鸿蒙&#xff08;HarmonyOS5&#xff09;中集成百度地图&#xff0c;可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API&#xff0c;可以构建跨设备的定位、导航和地图展示功能。 ​​1. 鸿蒙环境准备​​ ​​开发工具​​&#xff1a;下载安装 ​​De…...

Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解

文章目录 一、开启慢查询日志&#xff0c;定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...

2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版

1.题目描述 2.思路 当前的元素可以重复使用。 &#xff08;1&#xff09;确定回溯算法函数的参数和返回值&#xff08;一般是void类型&#xff09; &#xff08;2&#xff09;因为是用递归实现的&#xff0c;所以我们要确定终止条件 &#xff08;3&#xff09;单层搜索逻辑 二…...