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

如何在Grafana中标识传感器超过指定时间无数据的状态?

InfluxDB 1.8 传感器故障检测与当前值展示方案

针对你遇到的问题——既要保留所有传感器的Bar Gauge展示,又要识别超过1天未更新的故障传感器,同时保留GROUP_BY功能,这里提供两种实用方案:

方案一:子查询+RIGHT JOIN+COALESCE 保留所有传感器条目

通过子查询分别获取「最近1天的最新值」和「所有传感器ID列表」,再用RIGHT JOIN确保所有传感器都被纳入结果,最后用COALESCE填充故障传感器的标记值,这样故障传感器不会从Bar Gauge中消失。

示例InfluxQL查询:

SELECT 
  COALESCE(last_value, -999) AS current_temp,
  sensor_id
FROM (
  -- 获取最近1天内各传感器的最新温度值
  SELECT 
    LAST(temperature) AS last_value,
    sensor_id
  FROM sensor_data
  WHERE time >= now() - 1d
  GROUP BY sensor_id
) 
-- 关联所有已存在的传感器ID,确保故障传感器不被过滤
RIGHT JOIN (
  SELECT DISTINCT(sensor_id) FROM sensor_data
) ON sensor_id

说明:

  • RIGHT JOIN 会保留右侧子查询的所有传感器ID,即使左侧子查询(最近1天数据)中没有对应条目
  • COALESCE 将无数据的传感器值替换为-999(可自定义为其他异常值,比如null),后续在Bar Gauge中可通过颜色规则区分(比如把-999对应的柱子设为红色)

方案二:LAST函数结合时间判断,生成故障状态字段

直接GROUP BY传感器ID,同时通过最新数据的时间判断是否故障,生成状态字段,这样既能看到当前温度值,又能直观识别故障状态。

示例InfluxQL查询:

SELECT 
  LAST(temperature) AS current_temp,
  -- 根据最新数据时间判断故障状态
  CASE 
    WHEN MAX(time) < now() - 1d THEN '故障'
    ELSE '正常'
  END AS status,
  sensor_id
FROM sensor_data
GROUP BY sensor_id

说明:

  • MAX(time) 拿到每个传感器的最新数据时间,结合CASE语句生成状态标识
  • 可视化时,Bar Gauge可配置根据status字段设置柱子颜色(比如故障为红色,正常为绿色),同时保留温度值展示

可视化配置补充

无论用哪种方案,都可以在Bar Gauge的配置中:

  • 设置异常值(比如-999)的显示样式,比如隐藏数值只显示故障标识,或者用特殊颜色标注
  • 利用状态字段做维度区分,把故障传感器单独归类或高亮显示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 07:33:18