在使用 Prometheus 监控系统时,合理配置 Critical 级别的告警规则对于及时发现和处理严重问题至关重要。本文将详细介绍一套针对 Node 节点的 Critical 级别告警配置,包括告警规则的解释、配置方法以及最佳实践。
什么是 Critical 级别告警?
Critical 级别告警代表最高优先级的告警,通常用于指示可能导致服务中断或严重影响系统性能的问题。这些告警需要立即引起关注并采取行动。
Node Critical 告警规则
以下是一套针对 Node 节点的 Critical 级别告警规则:
# Critical 级别告警
- alert: NodeDown
expr: up{job="node-exporter"} == 0
for: 2m
labels:
severity: critical
annotations:
summary: "Node {{ $labels.instance }} is down"
description: "Node {{ $labels.instance }} has been down for more than 2 minutes"
- alert: NodeCPUUsageCritical
expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 95
for: 5m
labels:
severity: critical
annotations:
summary: "Critical CPU usage on {{ $labels.instance }}"
description: "CPU usage is above 95% on node {{ $labels.instance }} for 5 minutes"
- alert: NodeMemoryUsageCritical
expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 95
for: 5m
labels:
severity: critical
annotations:
summary: "Critical memory usage on {{ $labels.instance }}"
description: "Memory usage is above 95% on node {{ $labels.instance }} for 5 minutes"
- alert: NodeDiskSpaceCritical
expr: (node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"} * 100) < 5
for: 5m
labels:
severity: critical
annotations:
summary: "Critical disk space on {{ $labels.instance }}"
description: "Disk space usage is above 95% on node {{ $labels.instance }} for 5 minutes"
- alert: NodeRAIDDegraded
expr: node_md_disks_required - ignoring(state) (node_md_disks{state="active"}) > 0
for: 5m
labels:
severity: critical
annotations:
summary: "RAID array degraded on {{ $labels.instance }}"
description: "RAID array {{ $labels.device }} on {{ $labels.instance }} is in degraded state"
- alert: NodeFileDescriptorsCritical
expr: node_filefd_allocated / node_filefd_maximum * 100 > 95
for: 5m
labels:
severity: critical
annotations:
summary: "File descriptors critical on {{ $labels.instance }}"
description: "More than 95% of file descriptors are used on {{ $labels.instance }}"
- alert: NodeInodeCritical
expr: node_filesystem_files_free{mountpoint ="/"} / node_filesystem_files{mountpoint ="/"} * 100 < 5
for: 5m
labels:
severity: critical
annotations:
summary: "Inodes critical on {{ $labels.instance }}"
description: "Less than 5% inodes free on {{ $labels.instance }}"
- alert: NodeOOMKillerExecuting
expr: increase(node_vmstat_oom_kill[5m]) > 0
for: 0m
labels:
severity: critical
annotations:
summary: "OOM killer executed on {{ $labels.instance }}"
description: "OOM killer executed on {{ $labels.instance }}"
- alert: NodeHighCPUIOWait
expr: avg by(instance) (rate(node_cpu_seconds_total{mode="iowait"}[5m])) * 100 > 50
for: 5m
labels:
severity: critical
annotations:
summary: "High CPU IOWait on {{ $labels.instance }}"
description: "CPU IOWait is over 50% on {{ $labels.instance }} for 5 minutes"
- alert: NodeNetworkInterfaceDown
expr: node_network_up == 0
for: 2m
labels:
severity: critical
annotations:
summary: "Network interface down on {{ $labels.instance }}"
description: "Network interface {{ $labels.device }} is down on {{ $labels.instance }}"
告警规则解释
-
NodeDown: 检测节点是否宕机。如果 node-exporter 无法访问超过 2 分钟,触发告警。
-
NodeCPUUsageCritical: 监控 CPU 使用率。如果 CPU 使用率超过 95% 持续 5 分钟,触发告警。
-
NodeMemoryUsageCritical: 监控内存使用率。如果内存使用率超过 95% 持续 5 分钟,触发告警。
-
NodeDiskSpaceCritical: 监控磁盘空间。如果根分区可用空间低于 5% 持续 5 分钟,触发告警。
-
NodeRAIDDegraded: 检测 RAID 阵列状态。如果 RAID 阵列处于降级状态超过 5 分钟,触发告警。
-
NodeFileDescriptorsCritical: 监控文件描述符使用情况。如果使用率超过 95% 持续 5 分钟,触发告警。
-
NodeInodeCritical: 监控 inode 使用情况。如果可用 inode 低于 5% 持续 5 分钟,触发告警。
-
NodeOOMKillerExecuting: 检测 OOM Killer 是否执行。如果在过去 5 分钟内 OOM Killer 被触发,立即告警。
-
NodeHighCPUIOWait: 监控 CPU I/O 等待时间。如果 I/O 等待时间超过 50% 持续 5 分钟,触发告警。
-
NodeNetworkInterfaceDown: 检测网络接口状态。如果任何网络接口处于 down 状态超过 2 分钟,触发告警。
配置方法
-
将上述告警规则保存为 YAML 文件,例如
node_critical_alerts.yml
。 -
在 Prometheus 配置文件中引用该规则文件:
rule_files: - "node_critical_alerts.yml"
-
重启 Prometheus 服务使配置生效。
最佳实践
-
定期审查: 定期审查告警规则,确保阈值和持续时间设置合理。
-
避免误报: 适当调整阈值和持续时间,避免频繁的误报。
-
分级告警: 除了 Critical 级别,还应配置 Warning 级别的告警作为预警。
-
告警通知: 配置合适的通知渠道,确保关键人员能及时收到告警。
-
文档化: 为每个告警规则编写清晰的处理文档,包括可能的原因和解决步骤。
-
测试: 定期测试告警系统,确保告警能正常触发和发送。
-
持续优化: 根据实际运维经验不断优化告警规则和阈值。
通过合理配置和管理这些 Critical 级别的告警,可以大大提高系统的可靠性和运维效率。记住,告警系统的目标是帮助你及时发现和解决问题,而不是成为额外的负担。持续优化和调整是保持告警系统有效性的关键。