代码之家  ›  专栏  ›  技术社区  ›  nbari

使用count_over_time时如何按值1|0进行筛选

  •  0
  • nbari  · 技术社区  · 3 年前

    我正在从普罗米修斯收集数据 mysqld_exporter 并希望创建一个Grafana仪表板,我可以在其中以百分比表示服务可用性。

    通过使用此查询:

     count_over_time(mysql_up{instance="10.0.0.5:9104"}[1m])
    

    的输出 mysql_up 为1或0

    我得到所有数据点的总和,其值为 1|0 ,在这种情况下,我正在刮每一个 15s 所以我得到了 4 数据点。

    例如,如果从4个数据点中,有3个数据点的值为 1 一个值为0,即可用性的75%,我想绘制 75% 使用:

    (total_datapoints - datapoints_with_value_0) / total_datapoints * 100
    (4-1)/4 * 100 
    

    但现在我的问题是,我如何查询Prometheus,只获取值所在的数据点 0

    如何按值过滤,然后应用时间范围?

    如果我尝试以下内容:

    count_over_time(mysql_up{instance="10.0.0.5:9104"} == 0 [1h])
    

    count_over_time(mysql_up{instance="10.0.0.5:9104"} == 0)[1h])
    

    我得到错误:

    parse error: ranges only allowed for vector selectors
    

    有什么想法吗?

    0 回复  |  直到 3 年前
        1
  •  2
  •   Marcelo Ávila de Oliveira    3 年前

    我认为以下查询准确地返回了您想要的结果(可用性百分比):

    100*avg_over_time(mysql_up{instance="10.0.0.5:9104"}[1m])
    
    推荐文章