Metrics
概述
基于spring-boot-starter-actuator以及micrometer提供Prometheus监控所需端点。
组件坐标
<!-- 发送监控指标到prometheus -->
<dependency>
<groupId>dev.macula.boot</groupId>
<artifactId>macula-boot-starter-prometheus</artifactId>
<version>${macula.version}</version>
</dependency>
核心功能
配置Health端点
如果只需要health端点,只需要引入spring-boot-starter-actuator即可。
配置Prometheus端点
引入macula-boot-starter-prometheus即可。其他在Prometheus控制台配置。
配置端点
暴露health,metrics和prometheus端点。默认不配置只会暴露health
# 监控配置
management:
endpoint:
metrics:
enabled: true
endpoints:
web:
exposure:
include: health,metrics,prometheus
定义自定义指标
接下来,我们需要定义自定义指标。创建一个名为CustomMetrics的Java类,并添加以下代码:
import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.MeterRegistry;
import org.springframework.stereotype.Component;
@Component
public class CustomMetrics {
private final Counter customCounter;
public CustomMetrics(MeterRegistry registry) {
customCounter = registry.counter("custom_metric_counter");
}
public void incrementCustomCounter() {
customCounter.increment();
}
}
以上代码创建了一个名为custom_metric_counter的计数器指标。
在代码中更新指标值
@RestController
public class MyController {
private final CustomMetrics customMetrics;
public MyController(CustomMetrics customMetrics) {
this.customMetrics = customMetrics;
}
@GetMapping("/my-endpoint")
public String myEndpoint() {
// 业务逻辑代码
// 增加自定义计数器的值
customMetrics.incrementCustomCounter();
return "Success";
}
}
在上面的示例中,我们在myEndpoint方法中使用CustomMetrics类的incrementCustomCounter方法来增加计数器的值。
验证指标是否成功写入Prometheus
最后,我们可以通过访问http://localhost:8080/actuator/prometheus来验证指标是否成功写入Prometheus。在返回的结果中,你应该能够看到类似以下内容的指标:
#HELP custom_metric_counter
#TYPE custom_metric_counter counter
custom_metric_counter 1.0
依赖引入
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
</dependencies>
版本说明
spring-boot:https://github.com/spring-projects/spring-boot/blob/main/LICENSE.txt
micrometer:https://github.com/micrometer-metrics/micrometer/blob/main/LICENSE