用 Prometheus 碰到个奇怪的问题,百思不得其解
–问题:告警是正常的,恢复告警的发送不正常。
举例:以下面的 cpu 规则为例,如果 cpu 超过所设的阈值 90,是能接到告警的。如下:
·Status: firing
·StartsAt: 2020-10-18T10:44:22.718516222Z
·Discription: 命名空间 xx 的 pod xx-xx-testpod 当前的 CPU 使用率已达到 99.89.
但接到告警恢复的通知时,数值往往大于 90%…(也有正常的恢复)
·Status: resolved
·StartsAt: 2020-10-18T10:44:22.718516222Z
·Discription: 命名空间 xx 的 pod xx-xx-testpod 当前的 CPU 使用率已达到 98.11.
按我的理解 恢复通知只有 cpu < 90 持续 resolve_timeout 的值 之后才能触发,现在是哪里配置有问题吗?
-
相关组件都是通过 kubernetes operator 部署在 k8s 集群中的。
-
PrometheusRule:
-
alert: PodCPUOvercommit
description: 命名空间 {{ $labels.namespace }} 的 pod {{ $labels.pod }} 当前的 CPU 使用率已达到 {{ printf “%.2f” $value }}.
expr: | 100 * (sum(rate(container_cpu_usage_seconds_total{namespace!~”monitoring”,container!=””}[1m])) by (pod,namespace) / sum(kube_pod_container_resource_limits_cpu_cores{namespace!~”monitoring”,container!=””}) by (pod,namespace)) > 90
for: 3m
-
-
alertmanager
global:
resolve_timeout: 1m
route:
group_by: [‘alertname’]
group_wait: 10s
group_interval: 1m
repeat_interval: 12h
receiver: ‘webhook’
receivers:
-
name: ‘webhook’
webhook_configs:
-
url: ‘http://x.x.x.x:xx/’
send_resolved: true
-