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

178 lines
5.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 告警规则不生效问题排查指南
## 问题描述
`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. **通过日志检查:**
```bash
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. 检查遥测数据是否满足条件
**确认设备实际发送的数据:**
```bash
# 查看设备发送的遥测数据
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 Chains****Root Rule Chain**
2. 检查是否有 **Device Profile Alarm** 节点
3. 如果没有,需要添加:
- 添加节点类型:**Device Profile Alarm**
- 连接到 **Save Timeseries** 节点之后
### 6. 检查告警规则状态持久化
**如果告警规则配置了 "Persist alarm rules state"**
- 告警规则的状态会被持久化
- 如果之前有告警状态,可能需要清除状态
- 在设备详情页 → **Alarms** 中查看是否有旧的告警状态
### 7. 启用调试日志
**如果需要更详细的调试信息,可以启用告警相关的日志:**
```bash
# 查看告警相关的日志
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 Profile`TuoHengAirport`
**解决方案:**
- 方案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. **发送测试数据:**
```bash
# 使用 MQTT 发送测试数据
mosquitto_pub -h localhost -p 1883 \
-t "v1/devices/me/telemetry" \
-u "YOUR_ACCESS_TOKEN" \
-m '{"airport.temperature":15}'
```
4. **检查告警:**
- 在设备详情页 → **Alarms** 中查看
- 应该能看到告警 `HT`
## 参考信息
- ThingsBoard 告警规则文档https://thingsboard.io/docs/user-guide/device-profiles/#alarm-rules
- 告警规则配置示例https://thingsboard.io/docs/user-guide/device-profiles/#alarm-rule-configuration