java应用如何提供Prometheus指标?
背景描述
CAE内置了Prometheus,用于采集组件的监控指标,默认监控的指标有限,如果您希望自定义监控组件的更多指标,需要在程序中定义相应结构(Exporter),并暴露接口,部署在CAE上后配置。以快速入门中的Springboot后端组件为例,提供自定义Prometheus指标的方法供您参考。其通过HTTP暴露Prometheus格式指标,并在需要处自定义了指标结构。
添加POM依赖
在项目中src/pom.xml中,添加如下依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> </dependency>
修改配置文件
编辑resources目录下的application.yml文件,修改actuator相关的配置来暴露Prometheus格式的指标数据。
management: endpoints: web: exposure: include: prometheus
配置完成后,此springboot项目可以通过/actuator/prometheus路径,9090端口暴露出Prometheus格式的监控指标。
在springboot项目中自定义监控指标
定义一个Counter类型的指标,每次前端点击时调用后端api,就自增1。
src\main\java\com\huawei\cae\controller\UserDataController.java中,定义如下字段和方法,并import所需类:
作用是定义了一个Counter类型的监控指标,名为"click_operated_total"。
import io.micrometer.core.instrument.Counter; import io.micrometer.core.instrument.MeterRegistry; import javax.annotation.PostConstruct; ... @Autowired private MeterRegistry registry; private Counter visitCounter; @PostConstruct private void init() { visitCounter = registry.counter("click_operated_total", "click_operated_total",""); }
在前端调用访问的方法clientTest()第一行,添加如下代码:
visitCounter.increment();
这样,当每次访问该方法时,上面定义的“click_operated_total”就会增加1。
修改后的项目即可部署在CAE上,并监控自定义的Prometheus指标。