监控Alertmanager
与Prometheus一样,Alertmanager暴露了自身的相关指标。让我们创建一个Prometheus作业来监控Alertmanager。
监控
Alertmanager
的
Prometheus
作业
![](https://img-blog.csdnimg.cn/2021022410141051.png)
这将从
http://localhost:9093/metrics
收集指标并抓取一系列以
alertmanager_
为前缀的时间序列数据。这些数据包括按状态分类的警报计数、按接收器分类的成功和失败通知的计数(例如,所有向email
接收器发送失败的通知)。它还包含Alertmanager
集群状态指标
添加警报规则
现在Alertmanager已经配置完成,让我们添加第一条警报规则。并使用up指标来创建一些基本的可用性警报。
与记录规则一样,警报规则在
Prometheus
服务器配置中加载的规则文件内也使用
YAML
语句定义。让我们在rules
目录中创建一个新文件
node_alerts.yml
,以保存节点警报规则。
你可以在同一文件中同时保存记录规则和警报规则,但为了功能清晰明确,建议将它们放在单独的文件中。
创建警报规则文件:
![](https://img-blog.csdnimg.cn/20210224101957559.png)
不需要单独将此文件添加到
prometheus.yml
配置文件中的
rule_files
块,可以使用
globbing
通配符加载该目录中以_rules.yml
或
_alerts.yml
结尾的所有文件
在
rule_files
块中添加
globbing
通配符:
![](https://img-blog.csdnimg.cn/20210224102039915.png)
可以看到,我们已经添加了一些配置,这些配置将使用正确的命名约定来加载所有文件。我们需要重新启动Prometheus
服务器,以加载这个新的警报规则文件。
添加第一条警报规则
让我们添加第一条规则:一个CPU警报规则。我们将创建一个警报, 如果我们创建的CPU查询(5分钟内的节点平均CPU使用率)在至少60分钟内超过80%,则会触发警报。现在让我们看看这条规则。
第一条警报规则:
![](https://img-blog.csdnimg.cn/20210224102429751.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0NTU2NDE0,size_16,color_FFFFFF,t_70)
与记录规则一样,警报规则也可以组合在一起。
我们已经指定了一个组名node_alerts,该组中的规则包含在rules块中。每个规则都有一个名称,在alert子句中指定,这里是HighNodeCPU。
在每个警报组中,警报名称都必须是唯一的。
我们还有触发警报的测试或表达式,这在
expr子句中指定。
我们附加一个简单的检查:该指标是否大于
80
(或者说是
80
%使用率)。
下一个子句
for
,控制在触发警报之前测试表达式必须为
true
的时间长度。在示例中,指标instance:node_cpu:avg_rate5m需要在触发警报之前的
60
分钟内大于
80
%。这限制了警报误报或是暂时状态的可能性。
最后,我们可以使用标签(
label
)和注解(
annotation
)来装饰警报。警报规则中时间序列上的所有标签都会转移到警报。labels
子句允许我们指定要附加到警报的其他标签,这里我们添加了一个值为warning的
severity
标签,很快我们就会看到如何使用这个标签
警报上的标签与警报的名称相结合,构成警报的标识。这与时间序列相同,其中指标名称和标签构成时间序列的标识。
annotations
子句允许我们指定展示更多信息的标签,如描述、运行手册的链接或处理警报的说
明。我们添加了一个名为
summary
的标签来描述警报,还添加了一个名为
console
的注解,它指向了展示节点指标的Grafana
仪表板。这是一个用注解提供上下文的很好的例子。
现在我们需要重新加载
Prometheus
以启用新的警报规则。 重新启动Prometheus
后,你将能够在
Prometheus Web
界面
http://localhost:9090/alerts
中看到新的警报