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

如何在Grafana中基于InfluxDB实现类Prometheus死信开关告警

监控InfluxDB桶数据上报的Grafana告警配置方案

一、调整Flux查询适配告警场景

原仪表盘查询针对时间范围取数据,但告警需要检查最近12小时是否有数据上报,需修改查询逻辑,把无数据的情况转换成明确的可判断值,避免空结果导致告警无法触发:

// 获取最近12小时内的目标数据最后一条记录的时间
data = from(bucket: "<bucket_name>")
  |> range(start: -12h)
  |> filter(fn: (r) => r["_measurement"] == "°C")
  |> filter(fn: (r) => r["_field"] == "value")
  |> filter(fn: (r) => r["domain"] == "sensor")
  |> filter(fn: (r) => r["entity_id"] == "<entity_id>")
  |> last()
  |> keep(columns: ["_time"])

// 有数据返回1,无数据返回0,给告警规则提供明确判断依据
exists = if exists data then 1 else 0
yield(name: "data_exists", value: exists)

二、创建Grafana告警规则

  1. 进入Grafana的Alerting > Alert rules,点击Create alert rule
  2. 选择Query类型数据源,粘贴上述修改后的Flux查询
  3. 配置告警表达式:
    • 选中查询结果data_exists,设置条件为IS 0(代表最近12小时无数据)
    • 评估周期设为1小时(可根据需求调整,避免过于频繁检查)
    • 触发条件保持For: 0m,若需避免临时网络波动误报,可设为5分钟
  4. 配置通知:
    • 在Notifications板块选择已配置的邮件通知渠道(未配置的话先去Alerting > Contact points创建邮件联系人)
    • 设置告警标题与消息,例如:告警:<entity_id>传感器已12小时无数据上报

三、无数据场景的处理逻辑

Grafana告警对空查询结果的支持不佳,所以必须把无数据的情况转换成明确数值(比如上述方案里的0)。也可以用统计数据点数量的方式实现相同效果:

from(bucket: "<bucket_name>")
  |> range(start: -12h)
  |> filter(fn: (r) => r["_measurement"] == "°C")
  |> filter(fn: (r) => r["_field"] == "value")
  |> filter(fn: (r) => r["domain"] == "sensor")
  |> filter(fn: (r) => r["entity_id"] == "<entity_id>")
  |> count()
  |> yield(name: "data_count")

此时告警表达式设置为data_count IS 0即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 10:00:09