5.4 KiB
5.4 KiB
告警规则不生效问题排查指南
问题描述
在 default 设备配置下配置了一个告警规则 HT:
- 条件:
airport.temperature >= 10 - 重复次数:3次
- 设备:
7CTDM7H00B5EM1
但该设备没有看到告警。
排查步骤
1. 检查设备使用的 Device Profile
在 ThingsBoard Web UI 中:
- 进入 Devices → 找到设备
7CTDM7H00B5EM1 - 查看设备的 Device Profile 字段
- 确认是否使用的是
defaultDevice Profile
如果设备使用的不是 default Device Profile:
- 需要在该设备实际使用的 Device Profile 中配置告警规则
- 或者将设备切换到
defaultDevice Profile
2. 检查遥测数据的 Key 名称
关键问题:遥测数据的 Key 名称必须与告警规则中配置的 Key 名称完全匹配!
从日志中观察到:
- 设备
7CTDM7H00B5EM1发送的遥测数据中,有些消息包含drone.temperature - 告警规则配置的是
airport.temperature
检查方法:
-
在 Web UI 中查看遥测数据:
- 进入设备详情页 → Latest Telemetry
- 查看实际收到的遥测数据 key 名称
- 确认是否有
airport.temperature这个 key
-
通过日志检查:
docker logs mytb 2>&1 | grep -A 5 "7CTDM7H00B5EM1" | grep -E "data=|airport\.temperature|drone\.temperature" -
常见问题:
- 遥测数据 key 是
drone.temperature,但告警规则配置的是airport.temperature - 遥测数据 key 是
airport.temperature,但告警规则配置的是Airport.Temperature(大小写敏感) - 遥测数据 key 是
airport_temperature,但告警规则配置的是airport.temperature(下划线 vs 点号)
- 遥测数据 key 是
3. 检查告警规则配置
在 Device Profile 中检查告警规则:
- 进入 Device Profiles → 选择
default - 进入 Alarms 标签页
- 找到告警规则
HT,检查:- Alarm Type:
HT - Key:
airport.temperature(必须是TIME_SERIES类型) - Condition:
>= 10 - Repeat Count:
3 - Severity: 已配置(如
CRITICAL,WARNING等)
- Alarm Type:
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 节点:
- 进入 Rule Chains → Root Rule Chain
- 检查是否有 Device Profile Alarm 节点
- 如果没有,需要添加:
- 添加节点类型: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
症状:
- 告警规则配置在
defaultDevice Profile - 设备使用的是其他 Device Profile(如
TuoHengAirport)
解决方案:
- 方案1:在设备实际使用的 Device Profile 中配置告警规则
- 方案2:将设备的 Device Profile 改为
default
问题3:告警规则条件不满足
症状:
- 告警规则配置
>= 10,重复 3 次 - 但数据中
airport.temperature的值是 18、19 等,应该满足条件
可能原因:
- 数据中确实没有
airport.temperature字段 - 或者数据中该字段的值 < 10
解决方案:
- 检查实际遥测数据,确认字段名和值
- 调整告警规则条件
问题4:重复次数未达到
症状:
- 告警规则配置重复 3 次
- 但只有 1-2 次满足条件的数据
解决方案:
- 等待更多数据
- 或者降低重复次数要求
验证步骤
-
确认设备配置:
- 设备使用
defaultDevice Profile - Device Profile 中有告警规则
HT
- 设备使用
-
确认遥测数据:
- 设备发送的数据中包含
airport.temperature字段 - 该字段的值 >= 10
- 设备发送的数据中包含
-
发送测试数据:
# 使用 MQTT 发送测试数据 mosquitto_pub -h localhost -p 1883 \ -t "v1/devices/me/telemetry" \ -u "YOUR_ACCESS_TOKEN" \ -m '{"airport.temperature":15}' -
检查告警:
- 在设备详情页 → Alarms 中查看
- 应该能看到告警
HT