# 告警规则说明 ## 告警规则概述 当前配置了两组告警规则,用于监控 ONVIF 设备和网络设备的状态。 ## 告警规则详解 ### 1. ONVIF 设备告警组 (onvif_alerts) #### ONVIFDeviceDown - ONVIF设备离线 - **触发条件**:`up{job="onvif-devices"} == 0` - **持续时间**:1分钟 - **严重程度**:critical(严重) - **说明**:当 ONVIF 设备(如摄像头)无法访问或离线超过1分钟时触发 - **告警信息**:显示哪个设备实例离线 #### ONVIFDeviceHighTemperature - ONVIF设备温度过高 - **触发条件**:`onvif_device_temperature > 70` - **持续时间**:2分钟 - **严重程度**:warning(警告) - **说明**:当设备温度超过70°C时触发,防止设备过热损坏 - **告警信息**:显示设备实例和当前温度值 #### ONVIFDeviceLowStorage - ONVIF设备存储空间不足 - **触发条件**:`onvif_storage_usage_percent > 90` - **持续时间**:5分钟 - **严重程度**:warning(警告) - **说明**:当设备存储使用率超过90%时触发,提醒需要清理存储空间 - **告警信息**:显示设备实例和存储使用率 ### 2. 网络设备告警组 (network_alerts) #### NetworkDeviceDown - 网络设备离线 - **触发条件**:`probe_success{job="network-ping"} == 0` - **持续时间**:2分钟 - **严重程度**:critical(严重) - **说明**:当网络设备无法通过 ping 连通时触发 - **告警信息**:显示哪个网络设备实例无法访问 #### HighNetworkLatency - 网络延迟过高 - **触发条件**:`probe_duration_seconds{job="network-ping"} > 1` - **持续时间**:5分钟 - **严重程度**:warning(警告) - **说明**:当网络延迟超过1秒时触发,表示网络质量下降 - **告警信息**:显示设备实例和延迟时间 ## 为什么告警规则是 Inactive(非活跃)状态? 告警规则显示为 **inactive** 的原因: 1. **缺少数据源**: - 这些告警依赖于边缘节点推送的数据 - 需要配置 `edge-agent` 并部署到边缘节点 - 边缘节点需要配置 ONVIF 设备和网络探测目标 2. **指标不存在**: - `up{job="onvif-devices"}` - 需要边缘节点运行 ONVIF Exporter - `probe_success{job="network-ping"}` - 需要边缘节点运行 Blackbox Exporter - 如果这些指标不存在,告警规则无法评估,所以是 inactive 3. **数据未推送**: - 边缘节点的数据需要通过 `remote_write` 推送到中央服务器 - 检查边缘节点是否正常连接并推送数据 ## 如何激活告警规则? ### 步骤 1:部署边缘节点代理 ```bash cd ../edge-agent bash deploy.sh ``` ### 步骤 2:配置监控目标 1. **配置 ONVIF 设备**: - 编辑 `edge-agent/config/devices.csv` - 添加要监控的 ONVIF 设备信息 2. **配置网络探测目标**: - 编辑 `edge-agent/config/ping-targets.csv` - 添加要监控的网络设备 IP 地址 ### 步骤 3:更新配置 ```bash cd edge-agent/config ./update-configs.sh ``` ### 步骤 4:验证数据推送 1. 在 Prometheus 中查询指标: ```promql up{job="onvif-devices"} probe_success{job="network-ping"} ``` 2. 如果能看到数据,告警规则会自动变为 **active** 状态 ## 告警状态说明 - **Inactive(非活跃)**:告警规则已加载,但没有匹配的数据或条件未满足 - **Pending(待触发)**:条件满足,但未达到持续时间阈值 - **Firing(触发中)**:条件满足且持续时间达到阈值,告警已触发 - **Resolved(已解决)**:告警条件不再满足,告警已恢复 ## 告警通知 当告警触发时,会发送到 Alertmanager,然后根据配置发送通知: - 当前配置:发送到 webhook `http://127.0.0.1:5001/` - 可以修改 `alertmanager/alertmanager.yml` 配置邮件、钉钉、企业微信等通知方式 ## 自定义告警规则 可以在 `alert_rules.yml` 中添加更多告警规则,例如: ```yaml - alert: CustomAlert expr: your_metric > threshold for: 5m labels: severity: warning annotations: summary: "自定义告警" description: "描述信息" ``` 修改后,Prometheus 会自动重新加载配置(如果启用了 `--web.enable-lifecycle`)。