引言:
Prometheus是一个按功能划分的凭条,指标的收集和存储与警报是分开的。警报管理功能是由Alertmanager的工具提供,该工具是监控体系中的独立组件。
在Prometheus上定义警报规则后,这些规则可以出发事件,然后传播到Alertmanager,Alertmanager会决定如何处理相应的警报。Alertmanager对警报进行去重、分组,然后路由到不同的接收器,如电子邮件、短信或SaaS服务(PagerDuty等)。我们将在Prometheus服务器上编写警报规则 [2] ,这些规则将使用我们收集的指标并在指定的阈值或标准上触发警报。我们还将看到如何为警报添加一些上下文。当指标达到阈值或标准时,会生成一个警报并将其推送到Alertmanager。与Prometheus一样,Alertmanager配置也是基于YAML的配置文件。
一、Alertmanager安装使用
下载地址:
https://prometheus.io/download/#alertmanager
解压并将以下两个文件复制到指定目录,如下
[root@bogon alertmanager]# cp alertmanager /usr/local/bin/
[root@bogon alertmanager]# cp amtool /usr/local/bin/
[root@bogon ~]# alternatives --version #查看版本
alternatives version 1.7.2
[root@bogon alertmanager]# ./alertmanager #启动Alertmanager
浏览器访问ip:9093即可查看到Alertmanager图形页面
二、Prometheus配置Alertmanager
修改prometheus.yml文件,添加lerting块。具体内容如下:(其中最后一行的alertmanager为ip地址,或可以解析到对应的Alertmanager的IP)
alerting:
alertmanagers
- static_configs:
-targets:
-alertmanager:9093
配置监控好Alertmanager后,告警内容会发送给Alertmanager
三、Alertmanager服务发现
暂时没明白什么意思,后续清楚了再进行补充
四、监控Alertmanager
配置prometheus.yml文件
- job_name: 'alertmanager'
static_configs:
- targets: ['localhost:9093']
添加报警规则
在prometheus.yml的同级目录中,创建rules目录,在该新建目录下创建node_alerts.yml文件,内容如下:
rule_files:
- "rules/*_rules.yml"
- "rules/*_alerts.yml"
需要重启Prometheus才能使该文件配置生效
添加第一条警报规则-》如果5分钟内节点平均CPU使用率在至少60分钟内超过80%,则会触发警报
groups:
- name: node_alerts
rules:
- alert: HighNodeCPU
expr: instance:node_cpu:avg_rate5m >80
for: 60m
labels:
serverity:warning
annotations:
summary: High Node CPU for 1 hour
console: You might want to check the Node Dashboard
解释:指定组名为nod_alerts,警报名称为HighNodeCPU(每个警报组中,警报名称必须唯一),触发警报的测试表达式在expr中,检查条件为该指标是否大于80(或者说是80%使用率),for为测试表达式必须为true的时间长度。其中annotations里的summary的标签用来描述警报,console用注释提供上下文,方便快速排错。
五、警报触发
Prometheus以一个固定时间间隔来评估所有规则,这个时间由evaluate_interval定义,我们将其设置为15秒。
警报有三中状态:Inactive 警报未激活。Pending:警报已满足测试表达式条件,但未达到for指定的持续时间。Firing:警报满足测试表达式条件,且持续时间达到了for指定的持续时间。