spring-boot - 在 Spring Boot 中使用 Prometheus 推送网关 simpleclient 时出现无效推送指标问题
问题描述
我正在使用 prometheus 简单客户端通过 Spring Boot 应用程序在我的系统中收集指标
void insertBatchJob(String request , String[] labelNames, String[] labelValues,String counter) throws Exception {
CollectorRegistry registry = new CollectorRegistry();
Gauge inprogressRequests ;
if( !gaugeRegiseryMap.containsKey(request) ) {
inprogressRequests = Gauge.build()
.name(request).labelNames(labelNames).help(request).register();
gaugeRegiseryMap.put(request,inprogressRequests);
}else{
inprogressRequests = gaugeRegiseryMap.get(request);
}
try {
inprogressRequests.labels(labelValues[labelValues.length-4],
labelValues[labelValues.length-2],
labelValues[labelValues.length-3],
labelValues[labelValues.length-1]).set(Double.parseDouble(counter));
registry.register(inprogressRequests);
} finally {
PushGateway pg = new PushGateway("127.0.0.1:9091");
pg.pushAdd(registry, request);
}
}
以下代码正在运行,但是当我通过包含标签值的数组时更改 inprogressRequests.labels() 即
`
void insertBatchJob(String request , String[] labelNames, String[] labelValues,String counter) throws Exception {
CollectorRegistry registry = new CollectorRegistry();
Gauge inprogressRequests ;
if( !gaugeRegiseryMap.containsKey(request) ) {
inprogressRequests = Gauge.build()
.name(request).labelNames(labelNames).help(request).register();
gaugeRegiseryMap.put(request,inprogressRequests);
}else{
inprogressRequests = gaugeRegiseryMap.get(request);
}
try {
inprogressRequests..labels(labelValues).set(Double.parseDouble(counter));
registry.register(inprogressRequests);
} finally {
PushGateway pg = new PushGateway("127.0.0.1:9091");
pg.pushAdd(registry, request);
}
}`
同样给我错误-
来自http://127.0.0.1:9091/metrics/job/loop6_2的响应代码为 400,响应正文:推送的指标无效或与现有指标不一致:收集的指标。
这是我第一次使用 prometheus ,如果有人可以分享这一点会很好。
解决方案
尝试推送一个空指标,当您尝试一次推送两次相同的指标时会发生此问题。例如,将多个具有相同实验室的样本添加到指标中,或者如果 pushgateway 重新启动,您将无法发送相同的指标再次,您必须先将其删除。
见:https ://github.com/prometheus/pushgateway/blob/master/README.md
在状态码 400
推荐阅读
- javascript - 如何将对象“展平”为数组数组
- encryption - 谷歌云构建 - 在同一步骤中部署一个传递明确 ENV 变量和 KMS secretEnv 变量的云函数
- angular - Angular/NgRx 单元测试无法创建 TestBed
- microsoft-teams - 是否可以设计在安装 Microsoft Teams 应用程序时触发的设置步骤?
- python - 如何使用函数根据数据中的条件找到平均值
- unity3d - Raycast 穿过物体
- oracle - 如何在数小时内将大量数据(近 10TB)从 Oracle DB 传输到 Snowflake
- ruby-on-rails - Devise 和 Rails 6 出现“我们很抱歉,出了点问题”错误
- r - 如何解释这个分类树图中的预测?
- python - Django REST Framework Model Serializer 没有显示 POST 方法的所有字段?