如何从Prometheus获取最旧VM实例指标并在Grafana实现展示与告警
解决方案
一、Grafana面板展示最旧VM名称
由于vm_instance_info的creation_time是字符串标签,并非数值型指标值,直接用max/topk无法完成筛选。需要先将时间标签转为数值型时间戳,再定位最旧实例:
- 使用VictoriaMetrics的
parse_time函数把creation_time标签转成Unix时间戳,结合bottomk提取最旧的1个实例:bottomk(1, vm_instance_info * parse_time(vm_instance_info.creation_time)) - 在Grafana中选择Stat面板类型,进入面板的
Field设置:- 将
Display name设为{{ name }} - 显示模式选择
Value,就能直接展示最旧VM的名称。
- 将
二、创建实例超7天告警规则
通过计算当前时间与实例创建时间的差值,判断是否超过7天(合计604800秒):
PromQL查询语句
time() - parse_time(vm_instance_info.creation_time) > 604800
告警规则配置(以Prometheus为例)
groups: - name: vm_instance_age_alerts rules: - alert: VmInstanceTooOld expr: time() - parse_time(vm_instance_info.creation_time) > 604800 for: 5m labels: severity: warning annotations: summary: "VM实例 {{ $labels.name }} 已运行超7天" description: "实例 {{ $labels.name }} 创建时间为 {{ $labels.creation_time }},已超过7天未处理。"
如果在Grafana Alerting中配置,直接将上述PromQL作为告警查询条件,设置好通知渠道即可触发告警。
内容的提问来源于stack exchange,提问作者yershalom
相关产品推荐
相关产品推荐

