【问题标题】:Select the most frequent metric value选择最频繁的指标值
【发布时间】:2020-12-07 11:17:45
【问题描述】:

我需要创建一个 PromQL 查询来选择最常用的指标值并将其显示在 Grafana 面板中;类似 (Find most frequent value in SQL column)

在以下示例中,对于带有标签 job 的指标 status

我想在面板中显示 status 1(给定计数为 1 = 2, count for 2 = 1,count for 3 = 1)(并且可能在 Grafana 中使用 1,即作为 值映射面板的部分,例如Polystat)。

status(job="a") = 1
status(job="b") = 2
status(job="c") = 1
status(job="d") = 3

【问题讨论】:

    标签: prometheus grafana promql


    【解决方案1】:

    试试:

    count_values("val", status)
    

    您可以尝试对此应用topk(1, ...),但这很棘手(如果两个最高值的出现次数相同怎么办?)。

    【讨论】:

    • 我一直在玩这个,它看起来很有希望!它将显示{job="1"} 2,我可以简单地使用{{job}} 作为Legend 来显示1。如果需要更“复杂”的东西,例如使用 1 作为 Values Mapping 部分中的值怎么办?
    【解决方案2】:

    查询max(count_values("value",status)) == ignoring(value) group_right count_values("value",status)会给你 {value="1"} 2(与 topk 不同,如果多个指标具有相同的最大计数,则可能会为您提供更多行)。

    然后在 Grafana 中你只需要显示结果中的标签。

    【讨论】:

    • 谢谢!这是一个非常有趣的解决方案,其结果与此处发布的另一个解决方案相似:它将显示{job="1"} 2,我可以使用{{job}} 作为Legend 简单地显示1。如果需要更“复杂”的东西,例如使用 1 作为 Values Mapping 部分中的值怎么办?
    • @jbuddy 这取决于你到底想做什么(我认为,如果你的 Grafana 是当前版本),但很可能它会帮助你将“格式”设置为“表格”在 Grafana 查询编辑器中(并且可能打开“即时”开关)。
    • 是的,这越来越棘手了,我正在尝试使用 1 作为 @987654321 的 Values Mapping 部分中的值@。示例值:1 -> 文本:Running.
    猜你喜欢
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-27
    • 2017-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多