thingsboard/summary/26-告警规则不生效问题排查指南.md

5.4 KiB
Raw Permalink Blame History

告警规则不生效问题排查指南

问题描述

default 设备配置下配置了一个告警规则 HT

  • 条件:airport.temperature >= 10
  • 重复次数3次
  • 设备:7CTDM7H00B5EM1

但该设备没有看到告警。

排查步骤

1. 检查设备使用的 Device Profile

在 ThingsBoard Web UI 中:

  1. 进入 Devices → 找到设备 7CTDM7H00B5EM1
  2. 查看设备的 Device Profile 字段
  3. 确认是否使用的是 default Device Profile

如果设备使用的不是 default Device Profile

  • 需要在该设备实际使用的 Device Profile 中配置告警规则
  • 或者将设备切换到 default Device Profile

2. 检查遥测数据的 Key 名称

关键问题:遥测数据的 Key 名称必须与告警规则中配置的 Key 名称完全匹配!

从日志中观察到:

  • 设备 7CTDM7H00B5EM1 发送的遥测数据中,有些消息包含 drone.temperature
  • 告警规则配置的是 airport.temperature

检查方法:

  1. 在 Web UI 中查看遥测数据:

    • 进入设备详情页 → Latest Telemetry
    • 查看实际收到的遥测数据 key 名称
    • 确认是否有 airport.temperature 这个 key
  2. 通过日志检查:

    docker logs mytb 2>&1 | grep -A 5 "7CTDM7H00B5EM1" | grep -E "data=|airport\.temperature|drone\.temperature"
    
  3. 常见问题:

    • 遥测数据 key 是 drone.temperature,但告警规则配置的是 airport.temperature
    • 遥测数据 key 是 airport.temperature,但告警规则配置的是 Airport.Temperature(大小写敏感)
    • 遥测数据 key 是 airport_temperature,但告警规则配置的是 airport.temperature(下划线 vs 点号)

3. 检查告警规则配置

在 Device Profile 中检查告警规则:

  1. 进入 Device Profiles → 选择 default
  2. 进入 Alarms 标签页
  3. 找到告警规则 HT,检查:
    • Alarm Type: HT
    • Key: airport.temperature(必须是 TIME_SERIES 类型)
    • Condition: >= 10
    • Repeat Count: 3
    • Severity: 已配置(如 CRITICAL, WARNING 等)

4. 检查遥测数据是否满足条件

确认设备实际发送的数据:

# 查看设备发送的遥测数据
docker logs mytb 2>&1 | grep "7CTDM7H00B5EM1" | grep "airport.temperature" | tail -10

确认要点:

  • 数据中是否有 airport.temperature 字段
  • 该字段的值是否 >= 10
  • 是否有连续 3 次满足条件的数据

5. 检查 Device Profile Alarm 节点

确认 Root Rule Chain 中有 Device Profile Alarm 节点:

  1. 进入 Rule ChainsRoot Rule Chain
  2. 检查是否有 Device Profile Alarm 节点
  3. 如果没有,需要添加:
    • 添加节点类型:Device Profile Alarm
    • 连接到 Save Timeseries 节点之后

6. 检查告警规则状态持久化

如果告警规则配置了 "Persist alarm rules state"

  • 告警规则的状态会被持久化
  • 如果之前有告警状态,可能需要清除状态
  • 在设备详情页 → Alarms 中查看是否有旧的告警状态

7. 启用调试日志

如果需要更详细的调试信息,可以启用告警相关的日志:

# 查看告警相关的日志
docker logs mytb 2>&1 | grep -iE "alarm|device.*profile.*alarm|HT" | tail -50

常见问题及解决方案

问题1遥测数据 Key 不匹配

症状:

  • 设备发送的是 drone.temperature
  • 告警规则配置的是 airport.temperature

解决方案:

  • 方案1修改告警规则将 key 改为 drone.temperature
  • 方案2修改设备发送的数据将 key 改为 airport.temperature

问题2设备使用的不是配置告警规则的 Device Profile

症状:

  • 告警规则配置在 default Device Profile
  • 设备使用的是其他 Device ProfileTuoHengAirport

解决方案:

  • 方案1在设备实际使用的 Device Profile 中配置告警规则
  • 方案2将设备的 Device Profile 改为 default

问题3告警规则条件不满足

症状:

  • 告警规则配置 >= 10,重复 3 次
  • 但数据中 airport.temperature 的值是 18、19 等,应该满足条件

可能原因:

  • 数据中确实没有 airport.temperature 字段
  • 或者数据中该字段的值 < 10

解决方案:

  • 检查实际遥测数据,确认字段名和值
  • 调整告警规则条件

问题4重复次数未达到

症状:

  • 告警规则配置重复 3 次
  • 但只有 1-2 次满足条件的数据

解决方案:

  • 等待更多数据
  • 或者降低重复次数要求

验证步骤

  1. 确认设备配置:

    • 设备使用 default Device Profile
    • Device Profile 中有告警规则 HT
  2. 确认遥测数据:

    • 设备发送的数据中包含 airport.temperature 字段
    • 该字段的值 >= 10
  3. 发送测试数据:

    # 使用 MQTT 发送测试数据
    mosquitto_pub -h localhost -p 1883 \
      -t "v1/devices/me/telemetry" \
      -u "YOUR_ACCESS_TOKEN" \
      -m '{"airport.temperature":15}'
    
  4. 检查告警:

    • 在设备详情页 → Alarms 中查看
    • 应该能看到告警 HT

参考信息