遇到的问题
为了将本地Java接口的调用次数同步普罗米修斯, 我的做法是将接口调用次数推送到pushgateway, 在普罗米修斯中注册了pushgateway, 现在可以成功同步本地接口的调用次数, 但是每次调用代码同步的接口调用次数会把上次的覆盖, 比如第一次接口调用了10次, 第二次接口调用了9次, 普罗米修斯中统计到的接口调用次数就变成了9次, 而不是19次, 请各位指导下
推动接口调用次数的java代码
package org.example;
import io.prometheus.client.CollectorRegistry;
import io.prometheus.client.Counter;
import io.prometheus.client.exporter.PushGateway;
import java.io.IOException;
/**
* 将 本地接口调用次数推动到pushgateway, 并同步到普罗米修斯
*/
public class PushDemo {
private static final String NAME = "rpc_requests_total";
private static final String HELP = "接口请求总数";
private static final String[] LABELS = {"method", "result"};
private static final Counter counter = Counter.build()
.name(NAME)
.help(HELP)
.labelNames(LABELS)
.register();
public static void main( String[] args) {
for (int i = 0; i < 50; ++i) {
addSuccessCount();
}
}
public static void addSuccessCount() {
counter.labels("method1", "success").inc();
// 设置PushGateway的地址
PushGateway pushGateway = new PushGateway("ip:port");
// 将指标推送到PushGateway
try {
pushGateway.pushAdd(CollectorRegistry.defaultRegistry, "pushgateway_test");
} catch (IOException e) {
e.printStackTrace();
}
}
}
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>PrometheusPushDataDemo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>PrometheusPushDataDemo</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient_pushgateway</artifactId>
<version>0.12.0</version>
</dependency>
</dependencies>
</project>
prometheus注册pushgateway
- job_name: "pushgateway_test"
scrape_interval: 500ms
static_configs:
- targets: ['ip:port']
docker启动pushgateway
sudo docker run -d \
--name=pushgateway_test \
-p 19091:9091 \
-e TZ=Asia/Shanghai \
prom/pushgateway