You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Prometheus计算月度所有实体集体宕机时长?

用Prometheus计算所有实体全宕机的总时长

不需要自定义exporter,仅用Prometheus内置函数就能实现需求,核心思路是先构造表示“所有实体都宕机”的状态序列,再基于该序列计算累计宕机时长。

实现步骤与表达式

  1. 构造全宕机状态序列
    使用bool修饰符将求和结果转换为布尔状态:

    sum(a_metric_name{some_label="some_value"}) bool == 0
    

    这个表达式会返回值为1(所有实体都宕机)或0(至少一个实体正常)的gauge序列,对应每个采集时刻的状态。

  2. 计算累计宕机时长
    基于上述状态序列,结合avg_over_time计算过去30天的总宕机分钟数,逻辑和你提供的示例一致:

    avg_over_time( (sum(a_metric_name{some_label="some_value"}) bool == 0)[30d:] ) * 30 * 24 * 60
    
    • avg_over_time(...[30d:]):计算过去30天内全宕机状态的时间占比
    • 乘以30*24*60:将占比转换为总分钟数(如果需要秒数,替换为30*24*3600即可)

补充说明

  • 若采集间隔(scrape_interval)稳定,这个表达式的精度足够满足需求;若间隔波动较大,avg_over_time会自动基于时间加权计算占比,结果依然准确。
  • 若想直接获取秒级的准确时长,也可以用sum_over_time结合采集间隔计算:
    sum_over_time( (sum(a_metric_name{some_label="some_value"}) bool == 0)[30d:] ) * <你的采集间隔秒数>
    

内容的提问来源于stack exchange,提问作者Koy Gwaewion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 19:25:20