
# java应用如何提供Prometheus指标？
#### 背景描述
CAE内置了Prometheus，用于采集组件的监控指标，默认监控的指标有限，如果您希望自定义监控组件的更多指标，需要在程序中定义相应结构(Exporter)，并暴露接口，部署在CAE上后配置。以[快速入门](https://support.huaweicloud.com/qs-cae/cae_02_0001.html)中的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指标。
