文档首页/ 云应用引擎 CAE/ 常见问题/ 组件配置类/ java应用如何提供Prometheus指标?
更新时间:2024-05-24 GMT+08:00

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指标。