python - Prometheus - 在抓取之前覆盖具有不同标签的相同指标
问题描述
我正在使用自定义 python 应用程序使用从 Kafka 到 Prometheus 的各种计量指标。指标需要在越来越少的同一时间(毫秒)内使用。我只能从下面的示例中成功抓取最后一个指标,因为前三个会立即被覆盖。
my_metric{labelA = "aaa", labelB = "111"} 8
my_metric{labelA = "aaa", labelB = "222"} 12
my_metric{labelA = "bbb", labelB = "111"} 7
**my_metric{labelA = "bbb", labelB = "222"} 15**
我可以通过为它们设置一个唯一的指标名称来获取所有四个指标,例如:
my_metric_aaa_111{labelA = "aaa", labelB = "111"} 8
但这似乎不是最佳实践,而且在 Grafana 后期使用此类指标通常非常困难。
我还可以连续推送指标以进行抓取,并降低 Prometheus 配置中的抓取间隔,但这与解决方案的整体理念背道而驰。
除了我完全不知道的建议之外 - 是否可以为 Prometheus 保留相同的指标以在只有标签值不同的情况下被抓取?我发现的唯一讨论在这里没有答案:https ://github.com/prometheus/pushgateway/issues/65 。
如果上述不可行,我可以稍后在 Prometheus/Grafana 中以某种方式合并/加入/组合指标名称,以便能够根据它们的标签使用它们吗?意思是删除上面示例中不必要的结尾_aaa_111
以将所有内容都作为一个指标进行处理?
解决方案
您可以使用标签组合或某些唯一值来更改 Pushgateway 作业名称。所以普罗米修斯可以刮掉你所有的指标,而且它们不会被其他人覆盖。
在你的情况下,如果你 export:my_metric{labelA = "aaa", labelB = "111"} 8
到一个名为的工作,some_job_aaa_111
.
您可以测试手动推送一些指标:echo "my_metric{labelA = \"aaa\", labelB = \"111\"} 8" | curl --data-binary @- http://localhost:9091/metrics/job/some_job_aaa_111
在 Prometheus pushgateway 中,您将看到以下内容:
在 Prometheus 中,pushgateway 作业变成了一个您可以轻松忽略的标签,例如 Prometheus 的下一个输出:
推荐阅读
- java - Java内存模型和局部变量
- r - R中的system/system2命令
- go - go 1.16 embed - 去除目录名
- flutter - flutter/cloud firestore:如何从文档中只获取一个数据?
- css - SVG 在 WP Elementor 中有两种颜色作为徽标
- java - 为什么我使用 Netty 在此端口上创建了 UDP 监视器时端口的状态未侦听?
- javascript - 进行更改时,如何更新我的 serviceworker 脚本以更新缓存页面?
- javascript - Javascript XMLHTTPRequest 使用标头中未定义的协议发送
- python - 记录加速度计(X、Y 和 Z)读数的特定运动模式
- c# - 是否可以在此方法中移动我的返回值?