如何在 Prometheus/Grafana 中不指定标签的情况下通过唯一标签计算指标数量?
Posted
技术标签:
【中文标题】如何在 Prometheus/Grafana 中不指定标签的情况下通过唯一标签计算指标数量?【英文标题】:How can I calculate the number of metrics by unique labels without specifying a label in Prometheus/Grafana? 【发布时间】:2021-05-27 17:45:31 【问题描述】:因为所有 URL 都是动态的,所以我无法在对标签进行分组时指定特定的 URL。因为每次都会出现一个唯一的 URL。
这是一个指标示例。
16:00:00
http_tracemethod="GET",status="404",uri="/actuator/conditions/777", 1.0
http_tracemethod="GET",status="200",uri="/actuator/conditions", 3.0
http_tracemethod="GET",status="200",uri="/actuator/test", 3.0
http_tracemethod="GET",status="200",uri="/actuator/beans", 3.0
16:00:30
http_tracemethod="GET",status="404",uri="/actuator/conditions/777", 4.0
http_tracemethod="GET",status="200",uri="/actuator/conditions", 2.0
http_tracemethod="GET",status="200",uri="/actuator/test", 6.0
http_tracemethod="GET",status="200",uri="/actuator/beans123", 7.0
如何进行 Promethus 或 Grafana 查询 - 以便我得到那个号码。?
uri="/actuator/conditions/777" -> 5.0
uri="/actuator/conditions" -> 5.0
uri="/actuator/test" -> 9.0
uri="/actuator/beans" -> 3.0
uri="/actuator/beans123" -> 7.0
谢谢。
【问题讨论】:
【参考方案1】:如果您想计算按某个标签分组的指标值的总和:
sum(http_trace) by (uri)
这将为您提供以下结果:
uri="/actuator/conditions/777" 5.0
uri="/actuator/conditions" 5.0
uri="/actuator/test" 9.0
uri="/actuator/beans" 3.0
uri="/actuator/beans123" 7.0
如果您想获取按uri
分组的时间序列数(=有多少指标):
count(http_trace) by (uri)
结果将是:
uri="/actuator/conditions/777" 1.0
uri="/actuator/conditions" 1.0
uri="/actuator/test" 1.0
uri="/actuator/beans" 1.0
uri="/actuator/beans123" 1.0
这显示有多少具有唯一标签集的指标,按uri
标签分组。
【讨论】:
sum(http_trace) by (uri) 谢谢。有效,但不完全正确。如果我选择 2 小时的间隔,那么我可以看到我想看到的。也就是说,应该如此。如果我选择一天或几天的间隔,它会显示完全不同的东西。 @JDev 您可能希望添加increase()
函数来计算一段时间内的增量。那将是sum(increase(http_trace[2d])) by (uri)
。
谢谢。那么默认间隔是多少?但由于某种原因,我不明白为什么我会得到不完整的数字,例如(13.5 或 4.5)
@JDev 默认为无间隔,即当前或最后一个指标。指标可能会随着时间的推移而消失(如果导出器重新启动或脱机),这就是为什么您会在很长一段时间内得到奇怪的结果。至于increase()
函数的行为,它的工作原理类似于rate[interval]
乘以间隔中的秒数。这在文档中进行了解释:prometheus.io/docs/prometheus/latest/querying/functions/…
我已经阅读了好几遍文档,这个概念有点难以理解。我了解某些时期没有指标。但我不明白为什么它根本不采用那些存在的指标并且不总结它们。以上是关于如何在 Prometheus/Grafana 中不指定标签的情况下通过唯一标签计算指标数量?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Spring Boot + Prometheus + Grafana 确定时间范围内的准确请求计数
如何启用 Prometheus/Grafana 来显示我的 rabbitmq 指标?目前没有显示数据