1、添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
2、配置文件中新增prometheus配置
# spring-boot-actuator配置
management:
endpoints.web.exposure.include: '*'
metrics:
export:
prometheus:
enabled: ${METRICS_ENABLED:true} #控制是否开启Prometheus
distribution:
percentiles-histogram:
http.server.requests: false
minimum-expected-value:
http.server.requests: 20ms
maximum-expected-value:
http.server.requests: 200ms
slo:
http.server.requests: 50ms,100ms,150ms
tags:
tag: ${tagValue:tagValue}
应用启动成功后,可以通过访问ip:port/actuator/prometheus端点查看支持的指标
3、自定义gauge指标
private final Map<String, AtomicInteger> statusCodes = new HashMap<>();
.
.
.
private void createOrUpdateMetric(String healthType, int value) {
statusCodes.put(healthType, new AtomicInteger(value));
Set<Tag> tagList = new HashSet<>();
tagList.add(Tag.of("tag1", "tag1value"));
tagList.add(Tag.of("tag2", "tag2value"));
Gauge.builder(HEALTH, statusCodes, statusCodes -> statusCodes.get(healthType).get())
.tags("tag","tagValue")
.tags(tagList)
.tags(Tags.of(Tag.of(HEALTH_TYPE, healthType)))
.description(HEALTH_DESCRIPTION + healthType)
.register(meterRegistry);
}