Spring Boot 入门 - 进阶篇(8)- 应用监控(Actuator)

作为Spring Boot的另外一大亮点,就是actuator模块,它是Spring Boot Starter中的一个特殊模块,用于集中采集应用的各项指标信息。

[b](1)开启监控[/b]

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


引入后不需要做任何修改,启动应用就会看到以下日志:
[quote]o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/configprops || /configprops.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/env/{name:.*}],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EnvironmentMvcEndpoint.value(java.lang.String)
o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/env || /env.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/heapdump || /heapdump.json],methods=[GET],produces=[application/octet-stream]}" onto public void org.springframework.boot.actuate.endpoint.mvc.HeapdumpMvcEndpoint.invoke(boolean,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) throws java.io.IOException,javax.servlet.ServletException
o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/metrics/{name:.*}],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.MetricsMvcEndpoint.value(java.lang.String)
o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/metrics || /metrics.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/auditevents || /auditevents.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public org.springframework.http.ResponseEntity<?> org.springframework.boot.actuate.endpoint.mvc.AuditEventsMvcEndpoint.findByPrincipalAndAfterAndType(java.lang.String,java.util.Date,java.lang.String)
o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/health || /health.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.HealthMvcEndpoint.invoke(javax.servlet.http.HttpServletRequest)
o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/info || /info.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/dump || /dump.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/autoconfig || /autoconfig.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/trace || /trace.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/loggers/{name:.*}],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.LoggersMvcEndpoint.get(java.lang.String)
o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/loggers/{name:.*}],methods=[POST],consumes=[application/vnd.spring-boot.actuator.v1+json || application/json],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.LoggersMvcEndpoint.set(java.lang.String,java.util.Map<java.lang.String, java.lang.String>)
o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/loggers || /loggers.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/mappings || /mappings.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()
o.s.b.a.e.mvc.EndpointHandlerMapping : Mapped "{[/beans || /beans.json],methods=[GET],produces=[application/vnd.spring-boot.actuator.v1+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke()[/quote]

访问 http://localhost:8080/health 会返回以下json
[quote]{
"status" : "UP"
}[/quote]

[b](2)设置端点访问[/b]

[b]1-关闭验证[/b]
默认情况下很多端点是不允许访问的,会返回401:Unauthorized。

application.properties
[quote]management.security.enabled=false[/quote]

[b]2-开启HTTP basic认证[/b]

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


application.properties
[quote]security.user.name=admin
security.user.password=123456
management.security.enabled=true
management.security.role=ADMIN[/quote]

访问URL http://localhost:8080/env 后,就看到需要输入用户名和密码了。

[b]3-设置ContextPath[/b]

application.properties
[quote]management.contextPath=/manage[/quote]

那么URL就是:http://localhost:8080/manage/env

[b]4-设置端口[/b]

application.properties
[quote]management.port=8081[/quote]

那么URL就是:http://localhost:8081/manage/env

[b](2)端点Endpoint[/b]

[b]应用配置类[/b]
/autoconfig 获取应用的自动化配置报告
/beans 获取应用上下文中创建的所有Bean
/configprops 获取应用中配置的属性信息报告
/env 获取应用所有可用的环境属性报告
/mappings 获取应用所有Spring MVC的控制器映射关系报告
/info 获取应用自定义的信息

[b]度量指标类[/b]
/metrics 返回应用的各类重要度量指标信息
/health 返回应用的各类健康指标信息
/dump 返回程序运行中的线程信息
/trace 返回基本的HTTP跟踪信息

[b]操作控制类[/b]
/shutdown 用来远程关闭应用

[b](3)端点的开启或禁用[/b]
application.properties
[quote]endpoints.configprops.enabled=false
endpoints.shutdown.enabled=true[/quote]

[b](4)自定义端点[/b]

[b]1-自定义已有端点,比如 /health 端点[/b]
@Component
public class CustomHealth implements HealthIndicator {

public Health health() {
return Health.up().build();
}

}


访问URL:http://localhost:8081/manage/health

[b]2-创建新的端点[/b]
@Component
public class CustomEndpoint implements Endpoint<List<String>> {

public String getId() {
return "myep";
}

public boolean isEnabled() {
return true;
}

public boolean isSensitive() {
return true;
}

public List<String> invoke() {
List<String> messages = new ArrayList<String>();
messages.add("This is message 1");
messages.add("This is message 2");
return messages;
}
}


访问URL:http://localhost:8081/manage/myep

[b]3-列举所有端点[/b]
@Component
public class ListEndpoints extends AbstractEndpoint<List<Endpoint>> {
private List<Endpoint> endpoints;

@Autowired
public ListEndpoints(List<Endpoint> endpoints) {
super("allep");
this.endpoints = endpoints;
}

public List<Endpoint> invoke() {
return this.endpoints;
}
}


访问URL:http://localhost:8081/manage/allep

[b](5)自定义端点metrics[/b]
Spring Boot允许开发人员以编码的方式提供更丰富指标信息,通过/metrics端点来访问。counter是以Number类型来展现的指标;gauge是衡量双精度计算的指标。任何位置都可以注入CounterService或GaugeService。

counterService.increment("metricName");
counterService.decrement("metricName");
counterService.reset("metricName");


gaugeService.submit("metricName", 2.5);


参考:
http://www.baeldung.com/spring-boot-actuators
http://blog.didispace.com/spring-boot-actuator-1/
Spring Boot之Actuator介绍 Spring Boot Actuator 是一个强大的工具,用于监控和管理 Spring Boot 应用。通过提供一系列内置的端点,它使得你可以轻松地获取应用程序的运行时信息,并进行必要的调整。此外,你还可以根据需要自定义端点,并将其与各种监控系统集成。 阅读详情

相关推荐

Spring Boot Actuator 详解:让你的应用可监控、可管理、更健壮

info端点用于暴露应用的自定义信息,例如应用版本、构建时间、团队信息等。这些信息可以通过或文件配置。配置或info:app:developer:访问"app": {},Actuator 提供了强大的扩展机制,允许我们自定义端点、指标、健康检查,满足更复杂的需求。可以创建自定义的 Endpoint 类,并使用@Endpoint等注解定义端点的操作方法。可以通过自定义指标注册器,添加额外的指标标签、全局标签等。除了之外,Actuator 还提供了接口,用于更灵活地组织和扩展健康检查信息。

weixin_52568491的博客 1365

SpringBoot- 应用监控(Actuator)

作为Spring Boot的另外一大亮点,就是actuator模块,它是Spring Boot Starter中的一个特殊模块,用于集中采集应用的各项指标信息。 (1)开启监控  pom.xml  Xml代码    &lt;dependency&gt;     &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;     &lt...

CCw19940830 521

Spring Boot进阶 - Actuator监控

如果你需要创建自定义的端点,可以定义一个实现// 返回自定义的数据 return "This is data from a custom endpoint";} }// 返回自定义的数据 return "This is data from a custom endpoint";} }// 返回自定义的数据 return "This is data from a custom endpoint";} }

闫小甲的专栏 1258

SpringBoot高级——监控管理

监控管理  通过引入spring-boot-starter-actuator,可以使用Spring Boot为我们提供的准生产环境下的应用监控和管理功能。我们可以通过HTTP,JMX,SSH协议来进行操作,自动得到审计、健康及指标信息等 使用方法  1、引入依赖 <dependency> <groupId>org.springframework.boot</grou...

如不來的博客 1042

spring-boot-starter-actuator与应用监控

所有的应用开发完成之后,其最终目的都是为了上线运行,SpringBoot应用也不例外,而在应用运行的漫长生命周期内,为了保障其可以持续稳定的服务,我们通常需要对其进行监控,从而可以了解应用的运行状态,并根据情况决定是否需要对其运行状态进行调整。 顺应需求,SpringBoot 框架提供了 spring-boot-starter-actuator 自动配置模块用于支持 SpringBoot 应用的...

javaheheda的博客 5543

【网络安全 | Java代码审计】Actuators导致RCE

Jolokia 是一种基于 JMX(Java Management Extensions)的代理工具,它为 JMX 提供了 RESTful 的接口,便于管理和监控。但当 Jolokia 与 Spring Boot Actuators 配合使用时,如果存在不安全的配置,攻击者可通过漏洞实现远程代码执行。

等风来 3682

Java中的Actuator

端点暴露:借助Spring的MVC或WebFlux框架,将Actuator的各个端点以HTTP接口的形式暴露出来,以便外部工具或用户通过HTTP请求访问这些端点获取信息或执行操作。- 依赖注入与自动配置:基于Spring的依赖注入机制,通过自动配置功能,在应用启动时自动配置和初始化Actuator相关的Bean,加载相关配置和组件。- 数据收集与处理:利用Java的管理接口(如JMX)、各种监控工具和框架,收集应用运行时的各种数据,并进行处理和格式化,以合适的方式返回给用户。

2302_79932868的博客 822

使用 Spring Boot Actuator 实现应用实时监控

Spring Boot Actuator 是 Spring Boot 提供的一组生产级功能模块,用于帮助开发者对 Spring Boot 应用进行监控和管理。它提供了一系列 REST API 端点(Endpoints),可以获取应用程序的运行状态、健康检查、度量指标等信息。这些端点开箱即用,适用于本地开发、测试环境以及生产部署。在微服务架构中,系统复杂度高、服务数量多且分布广泛。为了快速定位问题、优化性能、保障系统稳定性,必须具备完善的监控能力。Spring Boot Actuator 提供了以下关键优势:

九天的专栏 1973

Spring boot——Actuator 详解

SpringBoot提供了所谓的endpoints(下文翻译为端点)给外部来与应用程序进行访问和交互。打比方来说,/health端点提供了关于应用健康情况的一些基础信息。metrics端点提供了一些有用的应用程序指标(JVM内存使用、系统CPU使用等)。这些Actuator模块本来就有的端点我们称之为原生端点。应用配置类获取应用程序中加载的应用配置、环境变量、自动化配置报告等与SpringBoot应用密切相关的配置类信息。度量指标类操作控制类提供了对应用的关闭等操作类功能。...

weixin_45985053的博客 3万+

华为防火墙双ISP出口实战:如何用策略路由实现电信联通流量自动切换(附配置截图)

本文详细解析了华为防火墙在双ISP环境下的智能选路技术,通过策略路由与健康检测的深度应用,实现电信联通流量的自动切换。文章包含实战配置截图,帮助企业解决切换延迟、路径劣化等核心挑战,提升业务连续性。

backprop5master的博客 643

手把手教你解决CentOS sshd启动报错:从权限问题到目录缺失的全套解决方案

本文提供了一套完整的CentOS SSH服务启动故障排查与修复方案。针对sshd启动报错,从systemd日志分析、sshd -t配置测试入手,详细解决了私钥文件权限过宽(如0644错误)和权限分离目录缺失等典型问题,并附带了扩展排查清单,帮助运维人员系统性地定位和解决连接故障。

weixin_29248611的博客 152

Spring Boot(六):Actuator 项目监控

Spring Boot Actuator 可以帮助监控和管理 Spring Boot 应用,比如健康检查、审计、统计和 HTTP 追踪等。所有的这些特性可以通过 JMX 或者 HTTP来获得。

YikunWu的博客 2574

PyWxDump实战:解密微信PC端本地数据库,实现聊天记录备份与分析

数据加密是保护敏感信息(如聊天记录)的核心技术,它通过特定算法将明文转换为密文,确保数据在存储和传输过程中的机密性。SQLCipher作为SQLite的加密扩展,采用AES-256算法对数据库文件进行页级加密,广泛应用于移动端和桌面端应用的数据保护。其技术价值在于,在保障用户隐私的前提下,为合规的数据备份、归档与分析提供了底层支持。在数据恢复、司法取证或合规审计等场景中,获取并解析此类加密数据是关键步骤。PyWxDump正是针对微信PC端本地SQLCipher加密数据库设计的工具,它通过逆向工程分析内存结构

450

Spring Boot Actuator 详解

Spring Boot Actuator 详解

嗨,欢迎来到我的 优快云 博客小天地!一名深耕多年的技术发烧友。在这里,我将把日常工作中积累的宝贵经验,从复杂架构设计的精妙之处,到代码优化的实战技巧,毫无保留地分享给大家。 6883

qmc5883p芯片坐标系方向定义

问题 最近一个项目用到qmc5883p, 然而确定磁力计方向的时候发现datasheet上写的不是很清楚, 并且example中还有一个设置方向的一步, 于是测试了芯片坐标方向并记录了下来; 该芯片和qmc5883L方向并不一致; 结果 qmc5883P的datasheet给出来如下说明, Y为笔者添加的; 但是这个方向是按照datasheet的example设置的结果: //Define the sign for X Y and Z axis qmc5883p_write_reg(0x2

时有限 4119

自建邮局服务器| 批量邮件群发系统PowerMTA+oem(mumara,mailwizz, interspire)

世界顶级自建邮局服务器PowerMTA+oem(mumara,mailwizz, interspire) PowerMTA4.5(最好用的 群发邮件软件)是用于大批量多ip开发的邮件传递邮寄。可按每小时发送数近百万条电子邮件,发送IP地址和域可以详细配置,加上目前流行前端oem,mumara,mailwizz, interspire等,可定时发送,定时重复发送,实现全自动化 邮件群发 方案。 官网(powermta4.5下载) https://www.sparkpost.com/powermta/ 使用Po

ytrsexpo的博客 6503

使用Actuator 实现Spring Boot应用监控

我们知道Spring Boot 提供了Actuator组件,方便我们对应用程序进行监控和维护。接下来,就来介绍Actuator到底是什么?如何在Spring Boot项目中快速集成Actuator? 一、Actuator简介 1.Actuator是什么? Actuator是Spring Boot提供的应用系统监控的开源框架,它是Spring Boot体系中非常重要的组件。它可以轻松实现应用程序的监控治理。支持通过众多 REST接口、远程Shell和JMX收集应用的运行情况。 2.端点(Endpoin

wdj_yyds的博客 4287

风光互补制氢系统动态仿真建模与性能分析

摘要 本文针对离网型风光互补制氢系统,建立了包含光伏阵列、风力发电机、PEM电解槽、储能电池和储氢罐的完整动态数学模型。基于MATLAB/Simulink平台开发了模块化仿真框架,设计了考虑电解槽最小运行功率约束的能量管理策略。通过典型日仿真分析表明,风光互补可有效平抑单一能源的功率波动,系统整体能量效率达58.7%,电解槽负荷跟随特性良好。提出的动态仿真方法为风光制氢系统的优化设计和运行控制提供了有效工具。 关键词:风光互补制氢;PEM电解槽;动态仿真;MATLAB/Simulink;能量管理

huanghm88的专栏 76

Spring Boot Actuator - 应用监控与管理

Spring Boot Actuator - 应用监控与管理

weixin_46619605的博客 2982

FPGA实现DDR接口

verilog// DDR2控制器状态机// 初始化序列// 发出初始化命令endendendend// 自动预充电end// 其他状态...endcaseendend。

whm128的博客 998

PyTorch深度学习实战(24)——使用U-Net架构进行图像分割

图像分割 (Image segmentation) 是计算机视觉领域中的一个重要任务,旨在将图像划分为具有语义信息的不同区域或对象。与目标检测任务不同,图像分割要求像素级别的精确定位和分类,将每个像素标记为属于哪个类别或属于哪个区域。在本节中,我们将介绍图像分割的基本概念,并训练一个基于 U-Net 架构的图像分割模型。

盼小辉丶的博客 1万+

Spring Boot整合Actuator、Admin对应用程序进行监控

本文详细介绍了SpringBoot应用监控的两种实现方式:通过Actuator提供监控端点,以及整合SpringBoot Admin搭建可视化监控平台。首先讲解了Actuator的基本配置,包括端点暴露、健康检查等核心功能。然后重点介绍了SpringBoot Admin的搭建过程,包含服务端和客户端的配置步骤,以及如何整合SpringSecurity实现安全访问控制。最后补充了服务下线邮件提醒功能的实现方法,为应用监控提供了完整的解决方案。文章还提供了相关项目的Git仓库地址,方便读者参考实践。

沐雨橙风ιε的博客 3368

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

使用Spring Boot Actuator监控应用

Actuator是Spring Boot提供的对应用系统的自省和监控的集成功能,可以对应用系统进行配置查看、相关功能统计等。使用Actuator引入依赖即可 Maven: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifa

u011851478的博客 2万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Spring Boot Actuator 端点监控

       spring-boot-starter-actuator库主要用来暴露自身信息。有助于对应用程序进行监控和管理,以及采集一些应用指标。actuator通过 restful api 请求来监管、审计、收集应用的运行情况。 actuator每个restful api请求对应一个端点Endpoint。       &...

旧路 2981

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: Spring Boot 入门 - 进阶篇(7)- 自动配置(AutoConfigure)
下一篇: 搭建分布式文件存储服务(FastDFS)
wayne_ren
博客等级 码龄21年 60粉丝 300原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值