You need to enable JavaScript to run this app.
文档中心
全栈可观测平台

全栈可观测平台

复制全文
下载 pdf
托管 Prometheus 告警配置
托管 Prometheus 告警配置概述
复制全文
下载 pdf
托管 Prometheus 告警配置概述
托管 Prometheus 告警配置包含查询语句、告警资源、通知策略、聚合策略 4 个关键配置,以及项目等其他配置。这些这些配置构成完整的托管 Prometheus 告警规则,用于定义“监控哪些对象、监控什么指标、达到什么条件时触发、触发后通知谁、用什么方式通知”的完整逻辑。​
基本概念​
  • 查询语句:即 PromQL(Prometheus Query Language)表达式,用于从时序数据库中检索和计算监控指标的标准查询语言,例如:up == 0(实例宕机)、rate(http_requests_total[5m]) > 1000(请求速率过高)等。在告警规则中,查询语句用于定义异常判定逻辑,决定了告警“监控什么、如何判定”。​
  • 告警资源:告警规则中实际被监控的具体实例,决定告警的作用边界和覆盖范围。托管 Prometheus 通过指定工作区进行告警资源选择。​
  • 通知策略:规定不同等级告警发生以及告警恢复时,需要接收通知消息的方式、渠道、联系人、告警内容展示样式等信息。​
  • 聚合策略:主要用于配置告警的聚合周期,将一批告警聚合到一起进行通知,避免因告警频繁触发导致短时间内产生大量告警消息。​
资源关系​
告警模板和预置告警模板中只包含部分告警配置,这些资源不仅能够把零散的告警配置固化成可复用的标准,而且可以结合起来快速批量创建告警规则,复用经验并提升配置效率。各个资源中包含的关键告警配置差异如下:​
​
关键配置​
告警规则​
预置告警模板​
告警模板​
查询语句​
✅​
✅​
✅​
告警资源​
✅​
❌​
❌​
通知策略​
✅​
❌​
❌​
聚合策略​
✅​
❌​
❌​
​
告警规则创建方式​
托管 Prometheus 提供多种告警规则创建方式,可根据实际场景选择最适合的方式。​
  • 自定义创建告警规则:若期望根据实际场景定制告警规则或告警规则数量较少时,推荐直接手动创建告警规则,不影响使用效率且能够精细化调整告警配置。操作步骤和配置说明参见 创建托管 Prometheus 告警规则 中的方式一。​
  • 应用预置告警模板:若缺少告警配置的经验沉淀,期望快速搭建一套告警监控体系,推荐直接使用官方提供的标准化告警模板,快速落地。应用预置告警模板时,补充告警资源、通知策略和聚合策略,即可集齐告警规则中的所有配置,基于预置告警模板快速创建告警规则。操作步骤和配置说明参见 创建托管 Prometheus 告警规则组。​
  • 应用自定义告警模板:若已经存在告警配置的经验沉淀,期望在同一地域内复用配置并减少告警规则重复创建,推荐参考以下步骤,创建并应用告警模板,将相关经验标准化落地。​
  1. 创建托管 Prometheus 告警模板:基于经验沉淀创建告警模板,将查询语句和规则等配置固化成告警模板,方便快速复用。​
  1. 创建托管 Prometheus 告警规则组:应用自定义告警模板,补充告警资源、通知策略和聚合策略,即可集齐告警规则中的所有配置。​
  • 通过 JSON 导入/导出告警规则:若其他项目中已经存在合适的告警规则,期望跨账号、地域、项目或工作区批量复制告警规则,推荐使用导入/导出功能,将其他工作区中的托管 Prometheus 告警规则导出,再导入到当前项目的托管 Prometheus 告警规则中使用。操作步骤和配置说明参见 创建托管 Prometheus 告警规则 中的方式二。​
常见告警​
Kubernetes 常见告警​
​
告警分类​
监控对象​
指标来源​
监控目的​
典型 PromQL​
Pod / 容器​
Pod / Container​
kube-state-metrics​
当容器在最近 5 分钟内持续处于 CrashLoopBackOff 状态时触发,用于识别反复启动失败或持续崩溃。​
​
max_over_time(kube_pod_container_status_waiting_reason{reason="CrashLoopBackOff"}[5m]) >= 1​
​
Pod / 容器​
Pod​
kube-state-metrics​
​
当 Pod 持续处于 Pending 或 Unknown 状态且不属于 Job 场景时触发,用于识别未成功就绪。​
​
sum by (namespace, pod, cluster) (​
max by (namespace, pod, job, cluster) (​
kube_pod_status_phase{phase=~"Pending|Unknown"}​
) * on (namespace, pod, cluster) group_left() topk by (namespace, pod, cluster) (​
1, max by (namespace, pod, owner_kind, cluster) (kube_pod_owner{owner_kind!="Job"})​
)​
) > 0​
​
Pod / 容器​
Container​
kube-state-metrics​
当容器长时间处于 Waiting 状态且原因非 CrashLoopBackOff 时触发,用于识别镜像拉取、创建或依赖初始化异常。​
​
kube_pod_container_status_waiting_reason{reason!="CrashLoopBackOff"} > 0​
​
Workload 发布​
Deployment​
kube-state-metrics​
当 Deployment 期望副本数大于当前可用副本数,且 10 分钟内更新副本数无变化时触发,用于识别发布卡住或副本长时间不可用。​
​
(​
kube_deployment_spec_replicas > kube_deployment_status_replicas_available​
) and (​
changes(kube_deployment_status_replicas_updated[10m]) == 0​
)​
​
Workload 发布​
Deployment​
kube-state-metrics​
当 Deployment 的 Progressing 条件为 false 时触发,用于识别滚动更新流程未正常推进。​
​
kube_deployment_status_condition{condition="Progressing", status="false"} != 0​
​
Workload 发布​
StatefulSet​
kube-state-metrics​
当 StatefulSet 新旧 Revision 不一致、更新副本未补齐,且 5 分钟内未推进时触发,用于识别有状态服务更新卡顿。​
​
(​
max by (namespace, statefulset, job, cluster) (​
kube_statefulset_status_current_revision unless kube_statefulset_status_update_revision​
) * on (namespace, statefulset, job, cluster)​
(kube_statefulset_replicas != kube_statefulset_status_replicas_updated)​
) and on (namespace, statefulset, job, cluster) (​
changes(kube_statefulset_status_replicas_updated[5m]) == 0​
)​
​
Workload 发布​
DaemonSet​
kube-state-metrics​
当 DaemonSet 的已调度、已更新、可用副本或错误调度状态异常,且 5 分钟内未推进时触发,用于识别 DaemonSet 未按预期覆盖节点。​
​
(​
(kube_daemonset_status_current_number_scheduled != kube_daemonset_status_desired_number_scheduled)​
or (kube_daemonset_status_number_misscheduled != 0)​
or (kube_daemonset_status_updated_number_scheduled != kube_daemonset_status_desired_number_scheduled)​
or (kube_daemonset_status_number_available != kube_daemonset_status_desired_number_scheduled)​
) and (​
changes(kube_daemonset_status_updated_number_scheduled[5m]) == 0​
)​
​
弹性伸缩​
HPA​
kube-state-metrics​
当 HPA 的期望副本数与当前副本数不一致,且当前副本数仍处于最小副本数与最大副本数之间并持续 15 分钟无变化时触发,用于识别扩缩容未生效。​
​
​
(kube_horizontalpodautoscaler_status_desired_replicas != kube_horizontalpodautoscaler_status_current_replicas)​
and (kube_horizontalpodautoscaler_status_current_replicas > kube_horizontalpodautoscaler_spec_min_replicas)​
and (kube_horizontalpodautoscaler_status_current_replicas < kube_horizontalpodautoscaler_spec_max_replicas)​
and changes(kube_horizontalpodautoscaler_status_current_replicas[15m]) == 0​
​
弹性伸缩​
HPA​
kube-state-metrics​
当 HPA 当前副本数等于最大副本数,且最大副本数与最小副本数配置不相等时触发,用于识别弹性策略已达到上限。​
​
​
(​
kube_horizontalpodautoscaler_status_current_replicas == kube_horizontalpodautoscaler_spec_max_replicas​
) and on (namespace, horizontalpodautoscaler, cluster) (​
kube_horizontalpodautoscaler_spec_max_replicas != kube_horizontalpodautoscaler_spec_min_replicas​
)​
​
调度 / 可维护性​
PDB​
kube-state-metrics​
当 PDB 期望健康副本数大于当前健康副本数时触发,用于识别可安全驱逐的冗余不足。​
​
(​
kube_poddisruptionbudget_status_desired_healthy - kube_poddisruptionbudget_status_current_healthy​
) > 0​
​
节点资源​
Node​
node-exporter​
当节点非 idle 和非 iowait 的 CPU 使用率平均值超过 90% 时触发,用于识别节点 CPU 持续高负载。​
​
sum without(mode) (avg without (cpu) (rate(node_cpu_seconds_total{mode!~"idle|iowait"}[2m]))) * 100 > 90​
​
节点资源​
Node​
node-exporter​
当节点内存使用率超过 90% 时触发,用于识别节点可用内存即将耗尽。​
​
​
100 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100) > 90​
​
节点资源​
Node Filesystem​
node-exporter​
当文件系统剩余可用空间使用率低于 15%,且按最近 6 小时趋势预测 24 小时内将耗尽,同时文件系统非只读时触发,用于提前预警磁盘空间不足。​
​
(​
node_filesystem_avail_bytes{mountpoint!=""} / node_filesystem_size_bytes{mountpoint!=""} * 100 < 15​
and​
predict_linear(node_filesystem_avail_bytes{mountpoint!=""}[6h], 24*60*60) < 0​
and​
node_filesystem_readonly{mountpoint!=""} == 0​
)​
​
节点资源​
Node Filesystem​
node-exporter​
当文件系统剩余可用空间使用率低于 5%,且文件系统非只读时触发,用于识别磁盘空间已接近耗尽。​
​
(​
node_filesystem_avail_bytes{mountpoint!=""} / node_filesystem_size_bytes{mountpoint!=""} * 100 < 5​
and​
node_filesystem_readonly{mountpoint!=""} == 0​
)​
​
节点资源​
Node Filesystem​
node-exporter​
当文件系统 inode 剩余比例低于 40%,且按最近 6 小时趋势预测 24 小时内将耗尽,同时文件系统非只读时触发,用于提前预警 inode 不足。​
​
(​
node_filesystem_files_free{mountpoint!=""} / node_filesystem_files{mountpoint!=""} * 100 < 40​
and​
predict_linear(node_filesystem_files_free{mountpoint!=""}[6h], 24*60*60) < 0​
and​
node_filesystem_readonly{mountpoint!=""} == 0​
)​
​
节点资源​
Node Disk​
node-exporter​
当块设备加权 I/O 时间速率持续超过阈值时触发,用于识别磁盘 I/O 队列拥堵或存储层饱和。​
​
rate(node_disk_io_time_weighted_seconds_total[5m]) > 10​
​
节点网络​
Node Network​
node-exporter​
当网络接收错误包占接收总包的比例超过 1% 时触发,用于识别节点网络接收链路异常。​
​
rate(node_network_receive_errs_total[2m]) / rate(node_network_receive_packets_total[2m]) > 0.01​
​
节点网络​
Node Network​
node-exporter​
当网络发送错误包占发送总包的比例超过 1% 时触发,用于识别节点网络发送链路异常。​
​
rate(node_network_transmit_errs_total[2m]) / rate(node_network_transmit_packets_total[2m]) > 0.01​
​
控制面​
Kubernetes Components​
kube-apiserver / kubernetes_build_info​
当同一集群内统计出的 Kubernetes 组件主次版本数量大于 1 时触发,用于识别控制面组件版本不一致。​
​
count by (cluster) (​
count by (git_version, cluster) (​
label_replace(kubernetes_build_info{job!~"kube-dns|coredns"},"git_version","$1","git_version","(v[0-9]*.[0-9]*).*")​
)​
) > 1​
​
控制面​
API Server Client​
kube-apiserver / rest_client_requests_total​
当客户端访问 API Server 的 5xx 错误请求占比超过 1% 时触发,用于识别控制面访问异常或依赖故障。​
​
(sum(rate(rest_client_requests_total{code=~"5.."}[5m])) by (cluster, instance, job, namespace)​
/​
sum(rate(rest_client_requests_total[5m])) by (cluster, instance, job, namespace)) > 0.01​
​
​
etcd 常见告警​
​
方向​
常见告警​
指标来源​
说明​
典型 PromQL​
可用性​
EtcdNoLeader​
etcd 原生指标​
用于识别 etcd 当前是否失去 Leader,属于最基础的控制面可用性信号。​
​
etcd_server_has_leader == 0​
​
性能​
EtcdHighFsyncDurations​
etcd 原生指标​
用于识别 WAL fsync 延迟升高,通常反映磁盘写入抖动或存储性能下降。​
​
histogram_quantile(0.99, sum(rate(etcd_disk_wal_fsync_duration_seconds_bucket[5m])) by (le)) > 0.5​
​
容量​
EtcdBackendQuotaLowSpace​
etcd 原生指标​
用于识别 backend 空间逼近配额上限,避免影响控制面稳定性。​
​
(etcd_mvcc_db_total_size_in_bytes / etcd_server_quota_backend_bytes) > 0.95​
​
写入异常​
EtcdProposalFailures / EtcdProposalsPendingHigh​
etcd 原生指标​
用于识别 proposal 失败或 pending 积压,辅助发现写入异常、共识处理变慢或内部阻塞。​
​
rate(etcd_server_proposals_failed_total[5m]) > 0 or etcd_server_proposals_pending > 0​
​
​
规则建议​
​
建议项​
推荐实践​
告警分级​
建议按 P0 / P1 / P2 分层配置告警,便于区分趋势性问题与紧急故障。​
条件持续时间​
建议为大部分告警规则设 for 条件持续时间,以降低瞬时抖动造成的误报。​
命名空间过滤​
建议排除测试环境、临时任务与短生命周期对象,以减少噪声。​
标签规范​
建议统一补充 cluster、namespace、pod 等标签,以提升路由与故障排查效率。​
指标可用性确认​
建议在配置告警规则前,先在 VMP Explore 页面确认对应指标是否已存在。若未查询到,再从采集源侧评估并补充采集,避免编写无法落地的告警规则。​
​
​
最近更新时间:2026.08.21 14:04:45
这个页面对您有帮助吗?
有用
有用
无用
无用