通常我们使用Prometheus来存储不同explorer采集器采集的监控指标数据,为了提高服务的可用性,降低故障率通常会使用alert rule来进行不同监控指标的监测并结合alertmanager进行告警的推送。
在Prometheus中alerts告警共有三种状态。分别为inactive,pending,firing;
• 含义:告警规则在当前评估周期内没有触发。
• 触发条件:告警条件未满足。
• 描述:在这个状态下,Prometheus 评估告警规则时,发现条件不满足,因此告警状态为 inactive。此状态表示没有检测到任何问题。
• 含义:告警条件已经满足,但还没有达到设定的持续时间。
• 触发条件:告警条件满足,但持续时间未达到 for 指定的时间长度。
• 描述:当告警规则的条件首次满足时,告警进入 pending 状态。此时 Prometheus 会等待一段时间(由 for 参数指定),如果在这段时间内条件依然满足,告警状态将转变为 firing。如果在这段时间内条件不再满足,告警将返回到 inactive 状态。
• 含义:告警条件已经满足并持续了设定的时间长度。
• 触发条件:告警条件满足并持续达到或超过 for 参数指定的时间长度。
• 描述:当告警在 pending 状态下满足条件的持续时间超过 for 参数指定的时间长度时,告警状态将转变为 firing。此时告警将被触发并发送到 Alertmanager 或其他通知渠道。firing 状态表示系统中存在问题且需要关注。
样例:
groups:
- name: example
rules:
- alert: HighCPUUsage
expr: 100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 90
for: 5m
labels:
severity: critical
annotations:
summary: "High CPU usage detected"
• inactive:在过去的评估周期中,CPU 使用率低于 90%。
• pending:CPU 使用率超过 90%,但尚未超过 5 分钟。
• firing:CPU 使用率超过 90%,并且已经持续了至少 5 分钟。
• inactive:告警条件未满足。
• pending:告警条件满足,但持续时间未达到设定的阈值。
• firing:告警条件满足并且持续时间达到或超过设定的阈值,告警被触发。
在实际应用中,我们可以根据告警的具体状态,进行不同的逻辑处理。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。