在微服务架构中,监控是保障系统稳定运行的关键组成部分。本文将介绍如何通过 Spring Boot 的 actuator
和 micrometer
组件,将应用的运行指标暴露出来,并使用 Prometheus 定时采集这些指标数据。
test/
├── pom.xml # Maven 项目对象模型文件
├── src
│ └── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── DemoMonitorApplication.java # 主类(示例控制器)
│ └── resources
│ └── application.yml # 应用配置文件
pom.xml 文件内容如下:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>3.2.5version>
<relativePath/>
parent>
<groupId>com.examplegroupId>
<artifactId>demo-monitorartifactId>
<version>1.0.0version>
<packaging>jarpackaging>
<name>demo-monitorname>
<properties>
<java.version>21java.version>
properties>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-actuatorartifactId>
dependency>
<dependency>
<groupId>io.micrometergroupId>
<artifactId>micrometer-registry-prometheusartifactId>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
plugin>
plugins>
build>
project>
模块 | 用途 |
---|---|
spring-boot-starter-web |
提供 Web 支持 |
spring-boot-starter-actuator |
暴露监控端点(如 /actuator/health ) |
micrometer-registry-prometheus |
让 Prometheus 能采集指标 |
spring-boot-maven-plugin |
Maven 构建可执行 jar 的插件 |
src/main/java/com/example/DemoMonitorApplication.java 内容如下:
package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoMonitorApplication {
public static void main(String[] args) {
SpringApplication.run(DemoMonitorApplication.class, args);
}
}
src/main/resources/application.yml 内容如下:
server:
port: 8080
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: always
metrics:
export:
prometheus:
enabled: true
说明:
management.endpoints.web.exposure.include
: 暴露的端点,必须包含 prometheus
management.metrics.export.prometheus.enabled
: 启用 Prometheus 导出/actuator/prometheus
使用 Maven 启动项目:
./mvnw spring-boot:run
或打包后运行:
mvn clean package
java -jar target/demo-monitor-1.0.0.jar
然后就可以看到有个 8080 端口启动了
启动应用后,访问指标接口:
http://localhost:8080/actuator/prometheus
你可以看到形如以下格式的指标输出:
Prometheus 配置示例(prometheus.yml
):
scrape_configs:
- job_name: 'spring-boot-app'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['localhost:8080']
启动 Prometheus 后,访问 http://localhost:9090 ,你就可以查询该 Spring Boot 应用的各类指标了,如:
表盘市场导入仪表盘:访问地址
ID:14370
spring-boot-starter-actuator
和 micrometer-registry-prometheus
,即可在 Spring Boot 中集成监控能力。/actuator/prometheus
接口上。scrape_configs
采集配置,即可定时拉取指标数据。若后续部署在 Kubernetes 集群中采集多实例指标。欢迎继续探讨