Spring Boot Actuator详解与深入应用(一):Actuator 1.x

article/2025/11/9 17:01:46

《Spring Boot Actuator详解与深入应用》预计包括三篇,第一篇重点讲Spring Boot Actuator 1.x的应用与定制端点;第二篇将会对比Spring Boot Actuator 2.x 与1.x的区别,以及应用和定制2.x的端点;第三篇将会介绍Actuator metric指标与Prometheus和Grafana的使用结合。这部分内容很常用,且较为入门,欢迎大家的关注。

Actuator是什么

Spring Boot Actuator提供了生产上经常用到的功能(如健康检查,审计,指标收集,HTTP跟踪等),帮助我们监控和管理Spring Boot应用程序。这些功能都可以通过JMX或HTTP端点访问。

通过引入相关的依赖,即可监控我们的应用程序,收集指标、了解流量或数据库的状态变得很简单。该库的主要好处是我们可以获得生产级工具,而无需自己实际实现这些功能。与大多数Spring模块一样,我们可以通过多种方式轻松配置或扩展它。

Actuator还可以与外部应用监控系统集成,如Prometheus,Graphite,DataDog,Influx,Wavefront,New Relic等等。 这些系统为您提供出色的仪表板,图形,分析和警报,以帮助我们在一个统一界面监控和管理应用服务。

本文将会介绍Spring Boot Actuator 1.x 包括其中的端点(HTTP端点)、配置管理以及扩展和自定义端点。

快速开始

引入如下的依赖:

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

Spring Boot Actuator 1.x

在1.x中,Actuator遵循读写模型,这意味着我们可以从中读取信息或写入信息。我们可以检索指标或我们的应用程序的健康状况,当然我们也可以优雅地终止我们的应用程序或更改我们的日志配置。Actuator通过Spring MVC暴露其HTTP端点。

端点

当引入的Actuator的版本为1.x时,启动应用服务,可以控制台输出如下的端点信息:

我们介绍一下常用的endpoints:

  • /health:显示应用程序运行状况信息(通过未经身份验证的连接访问时的简单“状态”或经过身份验证时的完整消息详细信息),它默认不敏感
  • /info:显示应用程序信息,默认情况下不敏感
  • /metrics:显示当前应用程序的“指标”信息,它默认也很敏感
  • /trace:显示跟踪信息(默认情况下是最后几个HTTP请求)

有些端点默认并不会被开启,如/shutdown。

配置端点

我们可以自定义每个端点的属性,按照如下的格式:

endpoints.[endpoint name].[property to customize] 

可以自定义的属性有如下三个:

  • id,暴露的http端点地址
  • enabled,是否开启
  • sensitive,当为true时,需要认证之后才会通过http获取到敏感信息

我们在配置文件中增加如下的配置,将会定制/beans端点。

endpoints.beans.id=springbeans
endpoints.beans.sensitive=false
endpoints.beans.enabled=true 

/health端点

/health端点用于监控运行的服务实例状态,当服务实例下线或者因为其他的原因变得异常(如DB连接不上,磁盘缺少空间)时,将会及时通知运维人员。

在默认未授权的情况下,通过HTTP的方式仅会返回如下的简单信息:

{"status": "UP"
} 

获取详细的health信息

我们进行如下的配置:

endpoints:health:id: chealthsensitive: falsemanagement.security.enabled: false 

如上一小节所述,我们更改了/health端点的访问路径为/chealth,并将安全授权关闭。访问http://localhost:8005/chealth将会得到如下的结果。

{"status": "UP","healthCheck": {"status": "UP"},"diskSpace": {"status": "UP","total": 999995129856,"free": 762513104896,"threshold": 10485760}
} 

自定义health的信息

我们还可以定制实现health指示器。它可以收集特定于应用程序的任何类型的自定义运行状况数据,并通过/health端点访问到定义的信息。

@Component
public class HealthCheck 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();}public int check() {// Our logic to check healthreturn 0;}
} 

实现HealthIndicator接口,并覆写其中的health()方法即可自定义我们的/health端点。

/info端点

通过/info端点,我们可以为应用服务定义一些基本信息:

info.app.name=Spring Sample Application
info.app.description=This is my first spring boot application
info.app.version=1.0.0 

我们在如上的配置中定义了服务名、描述和服务的版本号。

/metrics端点

/metrics端点展示了OS、JVM和应用级别的指标信息。当开启之后,我们可以获取内存、堆、线程、线程池、类加载和HTTP等信息。

{"mem": 417304,"mem.free": 231678,"processors": 4,"instance.uptime": 248325,"uptime": 250921,"systemload.average": 1.9541015625,"heap.committed": 375296,"heap.init": 393216,"heap.used": 143617,"heap": 5592576,"nonheap.committed": 43104,"nonheap.init": 2496,"nonheap.used": 42010,"nonheap": 0,"threads.peak": 30,"threads.daemon": 18,"threads.totalStarted": 46,"threads": 20,"classes": 6020,"classes.loaded": 6020,"classes.unloaded": 0,"gc.ps_scavenge.count": 3,"gc.ps_scavenge.time": 35,"gc.ps_marksweep.count": 1,"gc.ps_marksweep.time": 29,"httpsessions.max": -1,"httpsessions.active": 0,"gauge.response.info": 38.0,"counter.status.200.info": 1
} 

定制metrics端点

为了收集自定义的metrics,Actuator支持单数值记录的功能,简单的增加/减少计数功能。如下的实现,我们将登录成功和失败的次数作为自定义指标记录下来。

@Service
public class LoginServiceImpl implements LoginService {private final CounterService counterService;@Autowiredpublic LoginServiceImpl(CounterService counterService) {this.counterService = counterService;}@Overridepublic Boolean login(String userName, char[] password) {boolean success;if (userName.equals("admin") && "secret".toCharArray().equals(password)) {counterService.increment("counter.login.success");success = true;} else {counterService.increment("counter.login.failure");success = false;}return success;}
} 

再次访问/metrics,发现多了如下的指标信息。登录尝试和其他安全相关事件在Actuator中可用作审计事件。

{"gauge.response.metrics": 2.0,"gauge.response.test": 3.0,"gauge.response.star-star.favicon.ico": 1.0,"counter.status.200.star-star.favicon.ico": 10,"counter.status.200.test": 6,"counter.login.failure": 6,"counter.status.200.metrics": 4
} 

自定义端点

除了使用Spring Boot Actuator提供的端点,我们也可以定义一个全新的端点。

首先,我们需要实现Endpoint接口:

@Component
public class CustomEndpoint implements Endpoint<List<String>> {@Overridepublic String getId() {return "custom";}@Overridepublic boolean isEnabled() {return true;}@Overridepublic boolean isSensitive() {return false;}@Overridepublic List<String> invoke() {// Custom logic to build the outputList<String> messages = new ArrayList<String>();messages.add("This is message 1");messages.add("This is message 2");return messages;}
} 

getId()方法用于匹配访问这个端点,当我们访问/custom时,将会调用invoke()我们自定义的逻辑。 另外两个方法,用于设置是否开启和是否为敏感的端点。

[ "This is message 1", "This is message 2" ] 

进一步定制

出于安全考虑,我们可能选择通过非标准端口暴露Actuator端点。通过management.port属性来配置它。

另外,正如我们已经提到的那样,在1.x. Actuator基于Spring Security配置自己的安全模型,但独立于应用程序的其余部分。

因此,我们可以更改management.address属性以限制可以通过网络访问端点的位置:

#port used to expose actuator
management.port=8081 #CIDR allowed to hit actuator
management.address=127.0.0.1 

此外,除了/info端点,其他所有的端点默认都是敏感的,如果引入了Spring Security,我们通过在配置文件中定义这些安全的属性(username, password, role)来确保内置端点的安全。


http://chatgpt.dhexx.cn/article/txi6Glck.shtml

相关文章

springboot 集成 actuator

简介 spring-actuator做度量统计收集&#xff0c;使用Prometheus&#xff08;普罗米修斯&#xff09;进行数据收集&#xff0c;Grafana&#xff08;增强ui&#xff09;进行数据展示&#xff0c;用于监控生成环境机器的性能指标和业务数据指标。一般&#xff0c;我们叫这样的操作…

Activiti应用

1.介绍 Activiti是一个工作流引擎&#xff0c; activiti可以将业务系统中复杂的业务流程抽取出来&#xff0c;使用专门的建模语言 BPMN2.0进行定义&#xff0c;业务流程按照预先定义的流程进行执行&#xff0c;实现了系统的流程由activiti进行管理&#xff0c;减 少业务系统由…

springboot之Actuator

1、Actuator 介绍 Actuator是Springboot提供的用来对应用系统进行自省和监控的功能模块&#xff0c;借助于Actuator开发者可以很方便地对应用系统某些监控指标进行查看、统计等。 Actuator 的核心是端点 Endpoint&#xff0c;它用来监视应用程序及交互&#xff0c;spring-boo…

ActivitiListener

ActivitiListener 目录概述需求&#xff1a; 设计思路实现思路分析1.ActivitiListener2.Activity3.Gateway5.FieldExtension IOSpecification 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;sk…

SolidWorks2016软件,SW2010-2016.Activator.GUI.SSQ激活闪退解决办法:

SolidWorks2016软件&#xff0c;SW2010-2016.Activator.GUI.SSQ激活闪退解决办法&#xff1a; 解决方案&#xff1a; 原贴&#xff1a; https://xcshare.cn/other/1033.html

Actuator

1&#xff0c;简介 Actuator’ ktʃʊˌeɪtə是 Spring Boot 提供的对应用系统的自省和监控的 集成功能&#xff0c;可以对应用系统进行配置查看、相关功能统计等。在 Spring Cloud 中主要是完成 微服务的监控&#xff0c;完成监控治理。可以查看微服务间的数据处理和调用&…

Spring boot——Actuator 详解

一、什么是 Actuator Spring Boot Actuator 模块提供了生产级别的功能&#xff0c;比如健康检查&#xff0c;审计&#xff0c;指标收集&#xff0c;HTTP 跟踪等&#xff0c;帮助我们监控和管理Spring Boot 应用。 这个模块是一个采集应用内部信息暴露给外部的模块&#xff0c…

Spring Boot Actuator详解

Actuator简介 什么是Spring Boot Actuator&#xff1f; Spring Boot Actuator 模块提供了生产级别的功能&#xff0c;比如健康检查&#xff0c;审计&#xff0c;指标收集&#xff0c;HTTP跟踪等&#xff0c;帮助我们监控和管理Spring Boot应用。这个模块是一个采集应用内部信…

C# 反射之Activator用法举例

概述 程序运行时&#xff0c;通过反射可以得到其它程序集或者自己程序集代码的各种信息&#xff0c;包括类、函数、变量等来实例化它们&#xff0c;执行它们&#xff0c;操作它们&#xff0c;实际上就是获取程序在内存中的映像&#xff0c;然后基于这个映像进行各种操作。 Acti…

将IPA放到服务器提供下载

2015年12月15日 09:45:16 LC_畅 阅读数&#xff1a;3696 &#xff0a; 上传到服务器我们需要两个文件&#xff0c;一个ipa和一个 plist文件 &#xff0a; 注意plist文件和ipa包的名字必须要相同&#xff08;最好取名英文&#xff09; 第一步&#xff1a;把ipa文件放到你们服务…

ipa文件包获取服务器地址,iOS获取App ipa包以及资源文件

要获得线上APP的ipa文件&#xff0c;现在有以下几种方案 1.通过PP助手下载安装到手机的应用 2.通过iTools助手下载安装到手机的应用 3.通过Apple Configurator 2(Mac商店)获取 前两种方案网上的教程很多&#xff0c;这里只介绍第三种方案 首先 去Mac上的App Store下载Apple Con…

AppleStore 原始ipa文件提取

//TODO Apple Configurator 2提取ipa文件_饿到饱的博客-CSDN博客安装Apple Configurator 2从Mac AppStore安装Apple Configurator 2下载ipa打开后连接设备&#xff0c;选中设备点击添加&#xff0c;如果没登录就登录Apple ID&#xff0c;登录后会把你在AppStore下过的应用都列…

获取ipa文件下载链接(appstore下载链接)

获取apptore下载链接 所需工具: 一台越狱的iphone 抓包工具(fiddler或burp等) 步骤 1、ios10以下的版本,越狱之后下载插件ssl kill就可对appstore进行抓包 2、ios11以后的版本,越狱后要想访问appstore还需appstore++插件 3、打开appstore,找到要下载的软件,点击下…

Mac 电脑下载 AppStore 中的 ipa 软件包详细流程

附&#xff1a;iPhone 移除描述文件详细步骤&#xff08;Apple Configurator 2&#xff09; 1、Mac 电脑中安装 Apple Configurator 2 软件。 2、电脑连接手机&#xff0c;并信任&#xff0c;在所有设备中&#xff0c;选中设备&#xff0c;然后点击顶部的加号&#xff0c;选…

关于直接下载第三方IPA应用分发平台之蒲公英的研究

目前基于第三方应用分发的平台比较常用的就属蒲公英、fir等&#xff0c;在我们提交到平台后&#xff0c;我们可以通过扫描应用二维码来下载&#xff0c;比如蒲公英平台如下&#xff1a; 那么以上是非常普通的一个操作过程&#xff0c;问题来了&#xff1a;如何直接在电脑端下载…

ipa在线安装搭建_GBox:一款ipa签名安装下载神器

(主要功能:ipa签名安装、ipa安装包下载) 最新版使用教程点这里,并免费附送有效的企业证书: Alex.Leung:GBox免越狱签名安装IPA教程​zhuanlan.zhihu.com 一、推荐理由 让我们对市面上主流ipa安装工具作个对比: Shu: 付费应用,并且得配合捷径脚本使用JSBox:付费应用,…

苹果iPA游戏软件资源下载网站

苹果iPA游戏软件资源下载网站推荐&#xff0c;这篇文章我以比较公平的方式整理一下目前一些苹果iPA资源下载网站&#xff0c;每个网站的内容可以参考对应的截图&#xff0c;从而快速选择适合自己的资源站点。 1.iPA商店&#xff1a;https://ipa.store/ 2.Decrypt IPA Store&…

【已解决】ipa降级教学 苹果旧版APP下载

ipa降级教学 苹果旧版APP下载 平板有个软件新版本不好用&#xff0c;需要降级&#xff0c;所以出一个教学。教程基于一个旧版本下载的软件。 下载链接会放在这里&#xff0c;自行下载。使用前注册并登录. 安装包下载&#xff1a; 旧版APP下载软件: https://pan.baidu.com/s…

自建ipa下载服务器的方法(最简单,使用在线工具)

自建ipa下载服务非常复杂&#xff0c;首先要拥有域名&#xff0c;其实要用https&#xff0c;然后还要写plist那些&#xff0c;plist的语法还非常复杂&#xff0c;对于普通的ios开发者来说&#xff0c;自建下载服务非常麻烦&#xff0c;也没有必要。 因此&#xff0c;我们测试i…

输入下载页面链接自动获取ipa下载地址,支持本地下载,支持蒲公英和fir及绝大多数自定义下载页

IpaDownloadTool github地址 项目中使用的第三方:ALToastView、SGQRCode、BackButtonHandler Release版本 点击此处直接下载IpaDownloadTool安装包(ipa) 功能 此工具用来快捷下载/储存第三方来源的ipa支持蒲公英、fir下载页面拦截ipa地址、ipa下载支持其他网站自定义h5页…