178 lines
5.4 KiB
Markdown
178 lines
5.4 KiB
Markdown
# 告警规则不生效问题排查指南
|
||
|
||
## 问题描述
|
||
|
||
在 `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
|
||
|