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

如何在Grafana中计算设备近24小时及月度运行时长?

Grafana计算设备运行时长入门指引

一、当前查询的说明

你现在用的 avg_over_time(up{instance="***.***.***.**:****"}[24h]) * 100 是计算24小时内设备的平均可用性百分比,不是实际运行时长。up 指标取值为1(在线)或0(离线),这个语句取这段时间的平均值再乘100得到可用性占比,但如果要统计实际运行的时长(比如多少小时),需要调整查询逻辑。

二、运行时长的正确计算方法

1. 近24小时运行时长

要计算实际运行时长,用 sum_over_time 函数累加up为1时的所有样本时间:

# 结果单位为秒,直接显示原始值
sum_over_time(up{instance="***.***.***.**:****"}[24h])

# 转换为小时显示
sum_over_time(up{instance="***.***.***.**:****"}[24h]) / 3600

sum_over_time会把区间内每个up=1的样本对应的采集间隔(比如Prometheus默认15秒)累加,最终得到总在线秒数,除以3600即可转为小时。

2. 月度运行时长

月度统计完全可行,注意Prometheus的区间选择器支持[1mo](Prometheus 2.7及以上版本),自动适配不同月份的天数;如果版本不支持,用[31d]覆盖最长月份:

# 月度时长(小时)
sum_over_time(up{instance="***.***.***.**:****"}[1mo]) / 3600

# 兼容旧版本的写法
sum_over_time(up{instance="***.***.***.**:****"}[31d]) / 3600

三、面板配置步骤

  • 新建两个独立面板,分别命名为「近24小时运行时长」和「月度运行时长」
  • 每个面板选择你的Prometheus作为数据源
  • 在查询编辑器中填入对应时长的PromQL语句
  • 可视化类型推荐选Stat(大数字展示)或Gauge(仪表盘),直观呈现时长数值
  • 设置单位:在面板「Visualization」选项卡的「Unit」中选择「time > hours」,让数值自动以小时为单位显示
  • 时间范围:24小时面板选「Last 24 hours」,月度面板选「Last 30 days」或「Current month」

四、实用小技巧

  • 如果要统计多台设备的运行时长,去掉instance标签过滤,或用by(instance)按设备分组:
    sum_over_time(up[24h]) by (instance) / 3600
    
  • 确保Prometheus的up指标采集频率稳定,否则时长统计会有微小误差
  • 若需要严格统计自然月(如当月1日至当日),可结合Grafana的时间变量实现,入门阶段用[1mo]足够满足需求

内容的提问来源于stack exchange,提问作者Prodromos Koliopoulos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:01:03