写点什么

08 Prometheus 之警报管理

  • 2022 年 1 月 08 日
  • 本文字数:932 字

    阅读完需:约 3 分钟

08 Prometheus之警报管理

Prometheus 是一个按功能划分的平台,指标的收集和存储与警报是分开的警报管理功能由名为 Alertmanager 的工具提供,该工具是监控体系中的独立组件。我们需要在 Prometheus 服务器上定义警报规则,这些规则可以触发事件,然后传播到 Alertmanager。接下来,Alertmanager 会决定如何处理相应的警报,进而解决去重等问题,还会确定在发送警报时使用的机制:实时消息、电子邮件或通过 PagerDuty 和 VictorOps 等工具。


一个好警报的关键是能够在正确的时间、以正确的理由和正确的速度发送,并在其中放入有用的信息。


良好的警报应该具备以下几个关键特征:

1.适当数量的警报,关注症状而不是原因。噪声警报会导致警报疲劳,最终警报会被忽略。修复警报不足比修复过度警报更容易。

2.应设置正确的警报优先级。如果警报是紧急的,那么它应该快速路由到负责响应的一方。如果警报不紧急,那么我们应该以适当的速度发送警报,以便在需要时做出响应。

3.警报应包括适当的上下文,以便它们立即可以使用


alerting 块包含允许 Prometheus 识别一个或多个 Alertmanager 的配置。为此,Prometheus 使用与查找抓取目标时相同的发现机制,在默认配置中是 static_configs。


可以使用标签(label)注解(annotation)来装饰警报。警报规则中时间序列上的所有标签都会转移到警报。labels 子句允许我们指定要附加到警报的其他标签,这里我们添加了一个值为 warning 的 severity 标签,很快我们就会看到如何使用这个标签。


警报可能有以下三种状态:

Inactive:警报未激活。

Pending:警报已满足测试表达式条件,但仍在等待 for 子句中指定的持续时间。

Firing:警报已满足测试表达式条件,并且 Pending 的时间已超过 for 子句的持续时间。

Pending 到 Firing 的转换可以确保警报更有效,且不会来回浮动。没有 for 子句的警报会自动从 Inactive 转换为 Firing,只需要一个评估周期即可触发。带有 for 子句的警报将首先转换为 Pending,然后转换为 Firing,因此至少需要两个评估周期才能触发。


通常我们需要让警报系统知道我们已经停止服务以进行维护,并且不希望触发警报。或者,当上游出现问题时,我们需要将下游服务和应用程序“静音”。Prometheus 称这种警报静音为 silence

可以使用以下两种方法来设置 silence:1)通过 Alertmanager Web 控制台;2)通过 amtool 命令行工具

发布于: 刚刚阅读数: 2
用户头像

InfoQ签约作者 2018.11.30 加入

热爱生活,收藏美好,专注技术,持续成长

评论

发布
暂无评论
08 Prometheus之警报管理