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

如何在Grafana中统计Prometheus监控的ASG实例上报时长?

实现ASG实例上报持续时长列的方法

完全可以实现,核心思路是计算当前查询时间与实例首次上报up指标的时间戳差值,再转换为分钟,具体步骤如下:

1. 正确的PromQL查询语句

新增以下查询来获取实例的上报时长:

(time() - timestamp(first_over_time(up{asg_id="$asg_id"}[$__range]))) / 60

语句说明:

  • $__range:Grafana内置变量,自动匹配当前面板选择的时间范围,确保能获取到实例最早的上报样本
  • first_over_time(...):提取指定时间范围内该实例up指标的第一个样本(即首次上报的样本)
  • timestamp(...):提取该样本的时间戳(Unix时间,单位秒)
  • time():获取当前查询的时间戳
  • 除以60:将秒数转换为分钟

2. Grafana表格配置

  • 保留你原有的查询count(up{asg_id="$asg_id"}) by (asg_instance),并将其别名设置为ID(或在字段映射中把asg_instance字段映射为ID列)
  • 将上述时长查询的别名设置为Duration (m)
  • 在表格的「字段」设置中,调整列顺序,将ID和Duration (m)对应到目标位置

为什么之前的min/min_over_time不生效?

min和min_over_time是针对指标数值计算的(比如up的取值是0或1),无法直接获取样本的时间戳。而我们需要的是样本的上报时间,因此必须用first_over_time提取首次上报的样本,再通过timestamp()获取其时间戳来计算差值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 02:25:15