接口说明
springboot集成Prometheus需要开发的接口有:
- 监控JVM、tomcat等相关的指标;
- 自定义监控程序相关指标;
监控JVM、tomcat等相关的指标
micrometer
已经为我们做好了相关的接口,只需要引入依赖即可.
<!--集成Prometheus-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
设置application.yml
server:
port: 9090
spring:
application:
name: application-name
management:
endpoint:
endpoints:
web:
exposure:
include: '*'
@Bean
MeterRegistryCustomizer<MeterRegistry> configurer(@Value("${spring.application.name}") String applicationName) {
return registry -> registry.config().commonTags("application", applicationName);
}
启动程序后,访问/actuator/prometheus
即可获取相关指标.
使用Micrometer实现方法执行时间监控
@Bean
public TimedAspect timedAspect(MeterRegistry registry) {
return new TimedAspect(registry);
}
// 类上要开启@Aspect
// 在方法上添加 @Timed 注解即可
@GetMapping("/log/warn")
@Timed(value = "warn_methord",description = "健康检查接口")
public String warn() {
log.warn("warn msg.");
return "warn";
}
启动服务后,访问本地的/actuator/prometheus
接口,就能看到如下的指标数据了,其中就有我们自定义的warn_methord
的三个指标(count sum max)。
# HELP warn_methord_seconds 健康检查接口
# TYPE warn_methord_seconds summary
warn_methord_seconds_count{application="ggis",exception="None",method="GET",status="200",uri="/log/warn",} 3.0
warn_methord_seconds_sum{application="ggis",exception="None",method="GET",status="200",uri="/log/warn",} 0.0208932
# HELP warn_methord_seconds_max 健康检查接口
# TYPE warn_methord_seconds_max gauge
warn_methord_seconds_max{application="ggis",exception="None",method="GET",status="200",uri="/log/warn",} 0.01753
自定义监控程序相关指标
如果上面的接口返回的指标不够用,需要自己开发,可以参考下面的:
@GetMapping(value = "/metrics", produces = "text/plain")
@ResponseBody
String metrics() {
// 这里产生的随机数,实际按需修改
return "user_random{application=\"application\"} " + (int)(Math.random()*10);
}