| 规则名称 |
规则表达式 |
持续时间 |
规则描述 |
| NodeFilesystemSpaceFillingUp |
( node_filesystem_avail_bytes{job="node-exporter",fstype!=""} / node_filesystem_size_bytes{job="node-exporter",fstype!=""} * 100 < 15 and predict_linear(node_filesystem_avail_bytes{job="node-exporter",fstype!=""}[6h], 4*60*60) < 0 and node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 ) |
1h |
当节点上某个非只读文件系统的可用空间比例低于15%,并且基于过去6小时的数据预测其可用空间将在未来4小时内耗尽时触发。 |
| NodeFilesystemAlmostOutOfSpace |
( node_filesystem_avail_bytes{job="node-exporter",fstype!=""} / node_filesystem_size_bytes{job="node-exporter",fstype!=""} * 100 < 3 and node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 ) |
1h |
当节点上某个非只读文件系统的可用空间比例低于3%时触发。 |
| NodeFilesystemFilesFillingUp |
( node_filesystem_files_free{job="node-exporter",fstype!=""} / node_filesystem_files{job="node-exporter",fstype!=""} * 100 < 20 and predict_linear(node_filesystem_files_free{job="node-exporter",fstype!=""}[6h], 4*60*60) < 0 and node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 ) |
1h |
当节点上某个非只读文件系统的可用 inode(文件索引节点)比例低于20%,并且预测其将在未来4小时内耗尽时触发。 |
| NodeFilesystemAlmostOutOfFiles |
( node_filesystem_files_free{job="node-exporter",fstype!=""} / node_filesystem_files{job="node-exporter",fstype!=""} * 100 < 3 and node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 ) |
1h |
当节点上某个非只读文件系统的可用 inode 比例低于3%时触发。 |
| NodeNetworkReceiveErrs |
rate(node_network_receive_errs_total[2m]) / rate(node_network_receive_packets_total[2m]) > 0.01 |
1h |
当节点网络接口的接收错误包率(错误包数量/总接收包数量)持续2分钟高于1%时触发。 |
| NodeNetworkTransmitErrs |
rate(node_network_transmit_errs_total[2m]) / rate(node_network_transmit_packets_total[2m]) > 0.01 |
1h |
当节点网络接口的发送错误包率(错误包数量/总发送包数量)持续2分钟高于1%时触发。 |
| NodeHighNumberConntrackEntriesUsed |
(node_nf_conntrack_entries / node_nf_conntrack_entries_limit) > 0.75 |
5m |
当节点的网络连接跟踪表使用率超过75%时触发。 |
| NodeClockSkewDetected |
( node_timex_offset_seconds > 0.05 and deriv(node_timex_offset_seconds[5m]) >= 0 ) or ( node_timex_offset_seconds < -0.05 and deriv(node_timex_offset_seconds[5m]) <= 0 ) |
10m |
当检测到节点时钟与 NTP 服务器(或监控系统)的偏移大于50毫秒,并且偏移量在5分钟内没有向0修正的趋势时触发。 |
| NodeClockNotSynchronising |
min_over_time(node_timex_sync_status[5m]) == 0 and node_timex_maxerror_seconds >= 16 |
10m |
当节点时钟在5分钟内未与 NTP 服务器同步(sync_status 为0),且最大误差超过16秒时触发。 |
| NodeHighCPUUsage |
1 – avg by(instance, cluster) (rate(node_cpu_seconds_total{mode="idle"}[2m])) > 0.75 |
10m |
当节点平均 CPU 使用率(1 – 空闲率)持续2分钟高于75%时触发。 |
| NodeHighMemoryUsage |
1 – node_memory_MemAvailable_bytes{} / node_memory_MemTotal_bytes{} > 0.75 |
10m |
当节点内存使用率(1 – 可用内存比例)高于75%时触发。 |
| NodeStatusAbnormal |
kube_node_status_condition{condition="Ready", status="true"} == 0 |
10m |
当 Kubernetes 节点状态不为“Ready”时触发。 |
| 规则名称 |
规则表达式 |
持续时间 |
规则描述 |
| KubePodCrashLooping |
rate(kube_pod_container_status_restarts_total{job="kube-state-metrics"}[5m]) * 60 * 5 > 0 |
15m |
当某个 Pod 容器在5分钟内的重启频率大于0时触发。 |
| KubePodNotReady |
sum by (cluster,namespace, pod) ( max by(cluster,namespace, pod) ( kube_pod_status_phase{job="kube-state-metrics", phase=~"Pending|Unknown"} ) * on(cluster,namespace, pod) group_left(owner_kind) topk by(cluster,namespace, pod) ( 1, max by(cluster,namespace, pod, owner_kind) (kube_pod_owner{owner_kind!="Job"}) ) ) > 0 |
15m |
当非 Job 管理的 Pod 持续15分钟处于 Pending(等待调度)或 Unknown(状态未知)状态时触发。 |
| KubeDeploymentGenerationMismatch |
kube_deployment_status_observed_generation{job="kube-state-metrics"} != kube_deployment_metadata_generation{job="kube-state-metrics"} |
15m |
当 Deployment 的 observed_generation(控制器已观测到的版本)与 metadata_generation(当前期望的版本)不匹配持续15分钟时触发。 |
| KubeDeploymentReplicasMismatch |
( kube_deployment_spec_replicas{job="kube-state-metrics"} != kube_deployment_status_replicas_available{job="kube-state-metrics"} ) and ( changes(kube_deployment_status_replicas_updated{job="kube-state-metrics"}[5m]) == 0 ) |
15m |
当 Deployment 的可用副本数(status_replicas_available)在5分钟内无变化,且持续不等于其期望的副本数(spec_replicas)时触发。 |
| KubeStatefulSetReplicasMismatch |
( kube_statefulset_status_replicas_ready{job="kube-state-metrics"} != kube_statefulset_status_replicas{job="kube-state-metrics"} ) and ( changes(kube_statefulset_status_replicas_updated{job="kube-state-metrics"}[5m]) == 0 ) |
15m |
当 StatefulSet 的就绪副本数(status_replicas_ready)在5分钟内无变化,且持续不等于其当前副本总数(status_replicas)时触发。 |
| KubeStatefulSetGenerationMismatch |
kube_statefulset_status_observed_generation{job="kube-state-metrics"} != kube_statefulset_metadata_generation{job="kube-state-metrics"} |
15m |
当 StatefulSet 的 observed_generation 与 metadata_generation 不匹配持续15分钟时触发。 |
| KubeStatefulSetUpdateNotRolledOut |
( max without (revision) ( kube_statefulset_status_current_revision{job="kube-state-metrics"} unless kube_statefulset_status_update_revision{job="kube-state-metrics"} ) * ( kube_statefulset_replicas{job="kube-state-metrics"} != kube_statefulset_status_replicas_updated{job="kube-state-metrics"} ) ) and ( changes(kube_statefulset_status_replicas_updated{job="kube-state-metrics"}[5m]) == 0 ) |
15m |
当 StatefulSet 存在一个更新版本(update_revision),但已更新的 Pod 副本数在5分钟内无变化,且不等于总副本数时触发。 |
| KubeDaemonSetRolloutStuck |
( ( kube_daemonset_status_current_number_scheduled{job="kube-state-metrics"} != kube_daemonset_status_desired_number_scheduled{job="kube-state-metrics"} ) or ( kube_daemonset_status_number_misscheduled{job="kube-state-metrics"} != 0 ) or ( kube_daemonset_status_updated_number_scheduled{job="kube-state-metrics"} != kube_daemonset_status_desired_number_scheduled{job="kube-state-metrics"} ) or ( kube_daemonset_status_number_available{job="kube-state-metrics"} != kube_daemonset_status_desired_number_scheduled{job="kube-state-metrics"} ) ) and ( changes(kube_daemonset_status_updated_number_scheduled{job="kube-state-metrics"}[5m]) == 0 ) |
15m |
当 DaemonSet 满足以下任一条件且状态在5分钟内无进展时触发:当前已调度的 Pod 数不等于期望的 Pod 数;存在被错误调度到不匹配节点上的 Pod。 |
| KubeContainerWaiting |
sum by (namespace, pod, container,cluster) (kube_pod_container_status_waiting_reason{job="kube-state-metrics"}) > 0 |
1h |
当某个容器持续处于 Waiting 状态长达1小时时触发。 |
| KubeDaemonSetNotScheduled |
kube_daemonset_status_desired_number_scheduled{job="kube-state-metrics"} – kube_daemonset_status_current_number_scheduled{job="kube-state-metrics"} > 0 |
10m |
当 DaemonSet 的当前已调度 Pod 数持续10分钟低于其期望调度到所有匹配节点上的 Pod 数时触发。 |
| KubeDaemonSetMisScheduled |
kube_daemonset_status_number_misscheduled{job="kube-state-metrics"} > 0 |
15m |
当 DaemonSet 存在被“错误调度”的 Pod(即运行在不满足其节点选择器条件的节点上)持续15分钟时触发。 |
| KubeJobCompletion |
kube_job_spec_completions{job="kube-state-metrics"} – kube_job_status_succeeded{job="kube-state-metrics"} > 0 |
12h |
当 Job 在启动12小时后,其已成功完成的 Pod 数(succeeded)仍未达到 Job 规范中定义的预期完成数(completions)时触发。 |
| KubeJobFailed |
kube_job_failed{job="kube-state-metrics"} > 0 |
15m |
当 Job 的 Pod 执行失败(failed)时触发。 |
| 规则名称 |
规则表达式 |
持续时间 |
规则描述 |
| KubeCPUOvercommit |
sum by (cluster) (namespace:kube_pod_container_resource_requests_cpu_cores:sum) / sum by (cluster) (kube_node_status_allocatable_cpu_cores) > (count by (cluster) (kube_node_status_allocatable_cpu_cores) – 1) / count by (cluster) (kube_node_status_allocatable_cpu_cores) |
5m |
CPU 超售告警:当集群中所有 Pod 的 CPU 请求总量超过集群节点可分配 CPU 总量的 (N-1)/N时触发(N 为节点数)。 |
| KubeCPUOvercommit(new) |
sum by (cluster) (namespace:kube_pod_container_resource_requests_cpu_cores:sum) / sum by (cluster) (kube_node_status_allocatable{resource="cpu",unit="core"}) > (count by (cluster) (kube_node_status_allocatable{resource="cpu",unit="core"}) – 1) / count by (cluster) (kube_node_status_allocatable{resource="cpu",unit="core"}) |
5m |
CPU 超售告警(新版指标):功能同上,但使用了新版资源指标 kube_node_status_allocatable。 |
| KubeMemoryOvercommit |
sum by (cluster) (namespace:kube_pod_container_resource_requests_memory_bytes:sum) / sum by (cluster) (kube_node_status_allocatable_memory_bytes) > (count by (cluster) (kube_node_status_allocatable_memory_bytes) – 1) / count by (cluster) (kube_node_status_allocatable_memory_bytes) |
5m |
内存超售告警:当集群中所有 Pod 的内存请求总量超过集群节点可分配内存总量的 (N-1)/N时触发。 |
| KubeMemoryOvercommit(new) |
sum by (cluster) (namespace:kube_pod_container_resource_requests_memory_bytes:sum) / sum by (cluster) (kube_node_status_allocatable{resource="memory",unit="byte"}) > (count by (cluster) (kube_node_status_allocatable{resource="memory",unit="byte"}) – 1) / count by (cluster) (kube_node_status_allocatable{resource="memory",unit="byte"}) |
5m |
内存超售告警(新版指标):功能同上,使用新版资源指标 |
| KubeCPUQuotaOvercommit |
sum by (cluster) (kube_resourcequota{job="kube-state-metrics",resource="cpu",type="hard"}) / sum by (cluster) (kube_node_status_allocatable_cpu_cores) > 1.5 |
5m |
CPU 配额超售告警:当所有 Namespace 设置的 CPU 资源配额(硬限制)总和超过集群总可分配 CPU 的1.5倍时触发。 |
| KubeCPUQuotaOvercommit(new) |
sum by (cluster) (kube_resourcequota{job="kube-state-metrics",resource="cpu",type="hard"}) / sum by (cluster) (kube_node_status_allocatable{resource="cpu",unit="core"}) > 1.5 |
5m |
CPU 配额超售告警(新版指标):功能同上,使用新版指标。 |
| KubeMemoryQuotaOvercommit |
sum by (cluster) (kube_resourcequota{job="kube-state-metrics",resource="memory",type="hard"}) / sum by (cluster) (kube_node_status_allocatable_memory_bytes{job="kube-state-metrics"}) > 1.5 |
5m |
内存配额超售告警:当所有 Namespace 设置的内存资源配额(硬限制)总和超过集群总可分配内存的1.5倍时触发。 |
| KubeMemoryQuotaOvercommit(new) |
sum by (cluster) (kube_resourcequota{job="kube-state-metrics",resource="memory",type="hard"}) / sum by (cluster) (kube_node_status_allocatable{job="kube-state-metrics",resource="memory",unit="byte"}) > 1.5 |
5m |
内存配额超售告警(新版指标):功能同上,使用新版指标。 |
| KubeQuotaAlmostFull |
kube_resourcequota{job="kube-state-metrics",type="used"} / ignoring (instance, job, type) (kube_resourcequota{job="kube-state-metrics",type="hard"} > 0) > 0.9 < 1 |
15m |
资源配额使用率预警:当某个 Namespace 下任意一种资源(如 CPU、内存)的使用量达到其硬性配额限制的90%以上但未超过时触发。 |
| KubeQuotaExceeded |
kube_resourcequota{job="kube-state-metrics",type="used"} / ignoring (instance, job, type) (kube_resourcequota{job="kube-state-metrics",type="hard"} > 0) > 1 |
15m |
资源配额超限告警:当某个 Namespace 下任意一种资源的使用量超过其硬性配额限制时触发。 |
| PodCPULimitRate |
sum by (cluster, namespace, pod, container) (rate(container_cpu_usage_seconds_total{container!="POD",image!="",job=~"cadvisor|eks-network"}[1m])) / sum by (cluster, namespace, pod, container) (kube_pod_container_resource_limits_cpu_cores > 0) > 0.8 |
15m |
容器 CPU 使用率(对比 Limit)高:当某个容器的 CPU 实际使用率持续超过其设置的 Limit 限制的80%时触发。 |
| PodCPULimitRate(new) |
sum by (cluster, namespace, pod, container) (rate(container_cpu_usage_seconds_total{container!="POD",image!="",job=~"cadvisor|eks-network"}[1m])) / sum by (cluster, namespace, pod, container) (kube_pod_container_resource_limits{resource="cpu",unit="core"} > 0) > 0.8 |
15m |
容器 CPU 使用率(对比Limit)高(新版指标):功能同上,使用新版指标。 |
| PodCPURequestRate |
sum by (cluster, namespace, pod, container) (rate(container_cpu_usage_seconds_total{container!="POD",image!="",job=~"cadvisor|eks-network"}[1m])) / sum by (cluster, namespace, pod, container) (kube_pod_container_resource_requests_cpu_cores > 0) > 0.8 |
15m |
容器 CPU 使用率(对比 Request)高:当某个容器的 CPU 实际使用率持续超过其设置的 Request 请求值的80%时触发。 |
| PodCPURequestRate(new) |
sum by (cluster, namespace, pod, container) (rate(container_cpu_usage_seconds_total{container!="POD",image!="",job=~"cadvisor|eks-network"}[1m])) / sum by (cluster, namespace, pod, container) (kube_pod_container_resource_requests{resource="cpu",unit="core"} > 0) > 0.8 |
15m |
容器 CPU 使用率(对比 Request)高:功能同上,使用新版指标。 |
| PodMemoryLimitRate |
sum by (cluster, namespace, pod, container) (container_memory_working_set_bytes{container!="POD",image!="",job=~"cadvisor|eks-network"}) / sum by (cluster, namespace, pod, container) (kube_pod_container_resource_limits_memory_bytes > 0) > 0.8 |
15m |
容器内存使用率(对比 Limit)高:当某个容器的内存工作集(Working Set)使用量持续超过其设置的 Limit 限制的80%时触发。 |
| PodMemoryLimitRate(new) |
sum by (cluster, namespace, pod, container) (container_memory_working_set_bytes{container!="POD",image!="",job=~"cadvisor|eks-network"}) / sum by (cluster, namespace, pod, container) (kube_pod_container_resource_limits{resource="memory",unit="byte"} > 0) > 0.8 |
15m |
容器内存使用率(对比 Limit)高:功能同上,使用新版指标。 |
| PodMemoryRequestRate |
sum by (cluster, namespace, pod, container) (container_memory_working_set_bytes{container!="POD",image!="",job=~"cadvisor|eks-network"}) / sum by (cluster, namespace, pod, container) (kube_pod_container_resource_requests_memory_bytes > 0) > 0.8 |
15m |
容器内存使用率(对比 Request)高:当某个容器的内存工作集使用量持续超过其设置的 Request 请求值的80%时触发。 |
| PodMemoryRequestRate(new) |
sum by (cluster, namespace, pod, container) (container_memory_working_set_bytes{container!="POD",image!="",job=~"cadvisor|eks-network"}) / sum by (cluster, namespace, pod, container) (kube_pod_container_resource_requests{resource="memory",unit="byte"} > 0) > 0.8 |
15m |
容器内存使用率(对比 Request)高(新版指标):功能同上,使用新版指标。 |