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 命令行工具。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/edee44d371e11e95e8710e31f】。文章转载请联系作者。
评论