核心监控指标
基础设施层监控指标
节点资源监控
指标类型 | PromQL 查询 | 建议阈值 | 持续时间 | 告警级别 |
CPU 使用率 | (1 - avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance)) * 100 | >85% | 持续5分钟 | P2 |
CPU 使用率 | (1 - avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance)) * 100 | >95% | 持续2分钟 | P1 |
内存使用率 | (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 | >85% | 持续5分钟 | P2 |
内存使用率 | (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 | >95% | 持续2分钟 | P1 |
磁盘使用率 | (1 - node_filesystem_avail_bytes / node_filesystem_size_bytes) * 100 | >85% | 持续0分钟 | P2 |
磁盘使用率 | (1 - node_filesystem_avail_bytes / node_filesystem_size_bytes) * 100 | >95% | 持续0分钟 | P1 |
磁盘 IO 等待 | rate(node_disk_io_time_seconds_total[5m]) * 100 | >80% | 持续5分钟 | P2 |
网络监控
指标类型 | PromQL查询 | 建议阈值 | 持续时间 | 告警级别 |
网络错误率 | rate(node_network_receive_errs_total[5m]) + rate(node_network_transmit_errs_total[5m]) | >10/秒 | 持续5分钟 | P2 |
网络丢包率 | rate(node_network_receive_drop_total[5m]) + rate(node_network_transmit_drop_total[5m]) | >10/秒 | 持续5分钟 | P2 |
Kubernetes 集群层监控指标
节点状态监控
指标类型 | PromQL 查询 | 建议阈值 | 持续时间 | 告警级别 |
节点不可用 | kube_node_status_condition{condition="Ready",status="false"} | >0 | 持续3分钟 | P1 |
节点不可用 | kube_node_status_condition{condition="Ready",status="unknown"} | >0 | 持续1分钟 | P0 |
可调度节点数 | kube_node_status_condition{condition="Ready",status="true"} | <最小节点数 | 持续0分钟 | P1 |
Pod 状态监控
指标类型 | PromQL 查询 | 建议阈值 | 持续时间 | 告警级别 |
Pod 启动失败 | kube_pod_status_phase{phase="Failed"} | >0 | 持续5分钟 | P2 |
Pod 重启频繁 | rate(kube_pod_container_status_restarts_total[15m]) * 60 | >5次/小时 | 持续0分钟 | P2 |
Pod OOMKilled | increase(kube_pod_container_status_restarts_total{reason="OOMKilled"}[10m]) | >0 | 持续0分钟 | P1 |
Pod 挂起时间 | kube_pod_status_phase{phase="Pending"} | >0 | 持续10分钟 | P2 |
工作负载监控
指标类型 | PromQL 查询 | 建议阈值 | 持续时间 | 告警级别 |
Deployment 副本不足 | kube_deployment_status_replicas_available / kube_deployment_spec_replicas | <0.8 | 持续5分钟 | P1 |
DaemonSet Pod 缺失 | kube_daemonset_status_number_ready / kube_daemonset_status_desired_number_scheduled | <1.0 | 持续3分钟 | P1 |
容器层监控指标
资源使用监控
指标类型 | PromQL 查询 | 建议阈值 | 持续时间 | 告警级别 |
容器 CPU 使用率 | rate(container_cpu_usage_seconds_total[5m]) / on(pod) kube_pod_container_resource_limits_cpu_cores * 100 | >90% | 持续5分钟 | P2 |
容器内存使用率 | container_memory_working_set_bytes / on(pod) kube_pod_container_resource_limits_memory_bytes * 100 | >90% | 持续5分钟 | P2 |
容器内存使用率 | container_memory_working_set_bytes / on(pod) kube_pod_container_resource_limits_memory_bytes * 100 | >95% | 持续2分钟 | P1 |
应用层监控指标
HTTP 服务监控
指标类型 | PromQL 查询示例 | 建议阈值 | 持续时间 | 告警级别 |
HTTP 错误率 | rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m]) * 100 | >5% | 持续5分钟 | P2 |
HTTP 错误率 | rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m]) * 100 | >10% | 持续2分钟 | P1 |
响应时间P99 | histogram_quantile(0.99, rate(http_request_duration_seconds_bucket[5m])) | >2秒 | 持续5分钟 | P2 |
服务可用性 | up{job="your-service"} | <1 | 持续1分钟 | P0 |
告警配置建议
阈值设置原则
动态阈值策略
业务高峰期调整:根据历史数据动态调整阈值。
环境差异化:开发/测试/生产环境使用不同阈值。
渐进式告警:使用多级阈值避免告警风暴。
时间窗口设置
瞬时告警:适用于严重故障(如服务完全不可用)。
持续时间告警:适用于性能类问题(如 CPU 持续高负载)。
趋势告警:适用于容量规划(如磁盘空间增长趋势)。
告警规则标签建议
labels:severity: critical|high|warning|info # 告警严重程度team: platform|business|sre # 负责团队environment: prod|staging|dev # 环境标识component: api|database|cache # 组件类型
告警分级原则
优先级 | 特征描述 | 响应时间 | 通知方式 | 典型场景 | 处理原则 |
P0 - 紧急告警(Critical) | 直接影响用户体验或核心业务功能,需要立即响应 | 15分钟内 | 电话 + 短信 + 即时消息 | 集群整体不可用 核心服务全部实例失败 数据丢失风险 安全漏洞利用 | 立即启动应急响应流程 优先恢复业务功能 记录详细操作日志 |
P1 - 高优先级告警(High) | 部分业务功能受影响,可能导致服务降级 | 1小时内 | 即时消息 + 邮件 | 节点 NotReady 超过5分钟 服务副本数低于最小阈值 主要组件异常但有备份 | 快速定位问题范围 评估业务影响 制定恢复计划 |
P2 - 中等告警(Warning) | 系统资源使用异常,可能影响性能 | 4小时内 | 邮件 + 工作时间即时消息 | CPU/内存使用率持续超过80% 磁盘空间不足警告 网络延迟增加 | - |
P3 - 信息告警(Info) | 系统状态变化通知,无需立即处理 | 24小时内 | 邮件 | 配置变更通知 定期巡检结果 容量规划提醒 | - |
告警规则注解建议
annotations:runbook_url: "故障处理手册链接" # 推荐,处理指南dashboard_url: "监控面板链接" # 推荐,相关面板playbook_url: "自动化脚本链接" # 可选,自动处理impact: "业务影响描述" # 可选,影响范围action: "建议的处理动作" # 可选,处理建议