【问题标题】:How to calculate the percentage of values greater than 0 in PromQL (Prometheus)如何计算PromQL(Prometheus)中大于0的值的百分比
【发布时间】:2022-09-26 01:30:24
【问题描述】:

拜托,有人可以向我解释如何在 PromQL 中获得大于 0 的值的百分比。

我知道我可以得到大于 0 的向量值:TS_VEC>0

我想我需要像count_over_time(TS_VEC>0[24h])/{count_over_time(TS_VEC[24h])} 这样的东西,但它不起作用。

谢谢

    标签: prometheus grafana promql


    【解决方案1】:

    你有没有尝试过

    count(TS_VEC>0)/count(TS_VEC)

    【讨论】:

      【解决方案2】:

      以下查询返回每个时间序列m 在最后一天中大于 0 的原始样本的估计百分比:

      avg_over_time(
        (m >bool 0)[1d:10s]
      ) * 100
      

      此查询按以下方式工作:

      1. 它选择最后一天名称为m 的所有时间序列。您可以使用任何需要的series selector 代替m。 此查询使用subquery feature

      2. 它根据this algorithm 在过去 24 小时内从原始样本中为每个选定的时间序列生成24h/10s=8640 点。

      3. 它将步骤 2 中大于 0 的点值替换为 1,同时根据>bool 比较将剩余的点值替换为 0。有关详细信息,请参阅these docs

      4. 它根据每个选定的时间序列分别计算从步骤 3 返回的点的平均值。见avg_over_time docs。 平均值 0 表示原始时间序列在过去 24 小时内没有大于 0 的值。平均值 1 表示特定时间序列的所有值在过去 24 小时内都大于 0。

      5. 它将每个匹配时间序列的平均值乘以 100,以获得过去 24 小时内大于 0 的原始样本的百分比。

        附言使用 VictoriaMetrics 时,查询可以简化为以下查询 - 我正在研究的类似 Prometheus 的监控解决方案:

        share_gt_over_time(m[1d], 0) * 100
        

        share_gt_over_time() docs

      【讨论】:

        猜你喜欢
        • 2021-11-01
        • 2022-12-11
        • 2019-06-08
        • 1970-01-01
        • 2015-10-11
        • 2020-06-29
        • 2018-04-19
        • 2022-01-26
        • 1970-01-01
        相关资源
        最近更新 更多