【问题标题】:How can I calculate the number of metrics by unique labels without specifying a label in Prometheus/Grafana?如何在 Prometheus/Grafana 中不指定标签的情况下通过唯一标签计算指标数量?
【发布时间】:2021-05-27 17:45:31
【问题描述】:

因为所有 URL 都是动态的,所以我无法在对标签进行分组时指定特定的 URL。因为每次都会出现一个唯一的 URL。

这是一个指标示例。

16:00:00
http_trace{method="GET",status="404",uri="/actuator/conditions/777",} 1.0
http_trace{method="GET",status="200",uri="/actuator/conditions",} 3.0
http_trace{method="GET",status="200",uri="/actuator/test",} 3.0
http_trace{method="GET",status="200",uri="/actuator/beans",} 3.0

16:00:30
http_trace{method="GET",status="404",uri="/actuator/conditions/777",} 4.0
http_trace{method="GET",status="200",uri="/actuator/conditions",} 2.0
http_trace{method="GET",status="200",uri="/actuator/test",} 6.0
http_trace{method="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

谢谢。

【问题讨论】:

    标签: monitoring prometheus grafana metrics


    【解决方案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/…
    • 我已经阅读了好几遍文档,这个概念有点难以理解。我了解某些时期没有指标。但我不明白为什么它根本不采用那些存在的指标并且不总结它们。
    猜你喜欢
    • 2020-11-09
    • 2023-01-25
    • 2020-02-10
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多