🎓博主介绍:Java、Python、js全栈开发 “多面手”,精通多种编程语言和技术,痴迷于人工智能领域。秉持着对技术的热爱与执着,持续探索创新,愿在此分享交流和学习,与大家共进步。
📖DeepSeek-行业融合之万象视界(附实战案例详解100+)
📖全栈开发环境搭建运行攻略:多语言一站式指南(环境搭建+运行+调试+发布+保姆级详解)
👉感兴趣的可以先收藏起来,希望帮助更多的人
Spring Boot Actuator终极指南:构建企业级监控系统的7种姿势
一、引言
在企业级应用开发中,监控系统是保障应用稳定运行、及时发现和解决问题的关键。Spring Boot Actuator 为开发者提供了强大的监控和管理功能,通过简单的配置就能让应用具备丰富的监控指标和端点。本文将深入介绍使用 Spring Boot Actuator 构建企业级监控系统的 7 种有效姿势,帮助技术人员更好地掌握和应用这一强大工具。
二、姿势一:快速集成 Spring Boot Actuator
2.1 添加依赖
在 Spring Boot 项目的 pom.xml 中添加 Actuator 依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2.2 配置 Actuator
在 application.properties 或 application.yml 中进行基本配置:
# 开启所有端点
management.endpoints.web.exposure.include=*
2.3 验证集成
启动 Spring Boot 应用,访问 http://localhost:8080/actuator,如果看到一系列端点信息,则说明集成成功。
三、姿势二:监控应用健康状态
3.1 内置健康指示器
Spring Boot Actuator 提供了多个内置的健康指示器,如数据库连接、磁盘空间等。访问 /actuator/health 端点可以查看应用的整体健康状态。示例返回结果:
{
"status": "UP",
"components": {
"diskSpace": {
"status": "UP",
"details": {
"total": 250685511680,
"free": 100685511680,
"threshold": 10485760
}
},
"db": {
"status": "UP",
"details": {
"database": "MySQL",
"hello": 1
}
}
}
}
3.2 自定义健康指示器
可以通过实现 HealthIndicator 接口来创建自定义健康指示器。示例代码如下:
import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.stereotype.Component;
@Component
public class CustomHealthIndicator implements HealthIndicator {
@Override
public Health health() {
boolean isHealthy = checkCustomCondition();
if (isHealthy) {
return Health.up().build();
} else {
return Health.down().withDetail("error", "Custom condition failed").build();
}
}
private boolean checkCustomCondition() {
// 自定义健康检查逻辑
return true;
}
}
四、姿势三:监控应用指标
4.1 内置指标
Spring Boot Actuator 提供了丰富的内置指标,如内存使用、线程数量、HTTP 请求统计等。访问 /actuator/metrics 端点可以查看所有可用的指标。例如,访问 /actuator/metrics/jvm.memory.used 可以查看 JVM 已使用内存的指标信息。
4.2 自定义指标
使用 MeterRegistry 可以创建自定义指标。示例代码如下:
import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.MeterRegistry;
import org.springframework.stereotype.Service;
@Service
public class CustomMetricService {
private final Counter customCounter;
public CustomMetricService(MeterRegistry meterRegistry) {
this.customCounter = meterRegistry.counter("custom.counter");
}
public void incrementCustomCounter() {
customCounter.increment();
}
}
五、姿势四:使用日志端点
5.1 查看日志级别
访问 /actuator/loggers 端点可以查看应用中所有日志记录器的当前日志级别。示例返回结果:
{
"levels": [
"OFF",
"ERROR",
"WARN",
"INFO",
"DEBUG",
"TRACE"
],
"loggers": {
"root": {
"configuredLevel": "INFO",
"effectiveLevel": "INFO"
},
"com.example": {
"configuredLevel": "DEBUG",
"effectiveLevel": "DEBUG"
}
}
}
5.2 修改日志级别
可以通过向 /actuator/loggers/{loggerName} 端点发送 POST 请求来修改指定日志记录器的日志级别。示例使用 curl 命令:
curl -X POST -H "Content-Type: application/json" -d '{"configuredLevel": "DEBUG"}' http://localhost:8080/actuator/loggers/com.example
六、姿势五:使用审计端点
6.1 启用审计功能
在 Spring Boot 项目中添加 spring-boot-starter-security 依赖,并配置审计功能。示例代码如下:
import org.springframework.boot.actuate.audit.AuditEventRepository;
import org.springframework.boot.actuate.audit.InMemoryAuditEventRepository;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AuditConfig {
@Bean
public AuditEventRepository auditEventRepository() {
return new InMemoryAuditEventRepository();
}
}
6.2 查看审计事件
访问 /actuator/auditevents 端点可以查看应用的审计事件。示例返回结果:
{
"events": [
{
"timestamp": "2025-03-11T10:00:00.000+00:00",
"principal": "user",
"type": "AUTHENTICATION_SUCCESS",
"data": {
"key": "value"
}
}
]
}
七、姿势六:集成外部监控系统
7.1 集成 Prometheus
7.1.1 添加依赖
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
7.1.2 配置 Prometheus
在 application.properties 中添加配置:
management.endpoints.web.exposure.include=prometheus
7.1.3 配置 Prometheus 服务器
在 Prometheus 的配置文件 prometheus.yml 中添加对 Spring Boot 应用的监控配置:
scrape_configs:
- job_name: 'spring_boot_app'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['localhost:8080']
7.2 集成 Grafana
7.2.1 安装 Grafana
可以从 Grafana 官方网站下载并安装 Grafana。
7.2.2 配置数据源
在 Grafana 中配置 Prometheus 作为数据源。
7.2.3 创建仪表盘
使用 Grafana 的仪表盘功能创建自定义的监控仪表盘,展示 Spring Boot 应用的各种指标。
八、姿势七:使用自定义端点
8.1 创建自定义端点
通过实现 Endpoint 接口或使用 @Endpoint 注解可以创建自定义端点。示例代码如下:
import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
@Component
@Endpoint(id = "custom")
public class CustomEndpoint {
@ReadOperation
public Map<String, String> customEndpoint() {
Map<String, String> result = new HashMap<>();
result.put("message", "This is a custom endpoint");
return result;
}
}
8.2 访问自定义端点
启动应用后,访问 /actuator/custom 端点即可查看自定义端点的返回结果。
九、总结
Spring Boot Actuator 为企业级应用的监控和管理提供了丰富的功能和灵活的配置选项。通过上述 7 种姿势,技术人员可以根据实际需求构建出强大的企业级监控系统,及时发现和解决应用运行过程中出现的问题,保障应用的稳定运行。


4480

被折叠的 条评论
为什么被折叠?



