一、概述
prometheus通过规则文件对比抓取到的数据,来判断是否触发告警,我们通过配置告警的工具altermanager进行告警通知;
规则文件,写的就是,当我们获取到的PromeQL的值到达一个设置的规则后,触发告警;
也就是说,规则文件,是出发告警的关键,而altermanager是告警的手段、工具。
二、安装部署alertmanager工具
1,软件包获取方式
下载地址:
wget https://github.com/prometheus/alertmanager/releases/download/v0.26.0/alertmanager-0.26.0.linux-amd64.tar.gz
为了方便学习,我给大家也准备了百度云盘的安装包:
链接:https://pan.baidu.com/s/1BgN8Lc5zrqakX8XNEwxh4Q?pwd=o5g7
提取码:o5g7
2,上传解压软件包
[root@prometheus-server32 ~]# rz -E
[root@prometheus-server32 ~]# mkdir -pv /prometheus/softwares/
[root@prometheus-server32 ~]# tar xf alertmanager-0.26.0.linux-amd64.tar.gz -C /prometheus/softwares/
[root@prometheus-server32 ~]# ln -svf /prometheus/softwares/alertmanager-0.26.0.linux-amd64/ /prometheus/softwares/alertmanager
[root@prometheus-server32 ~]# cd /prometheus/softwares/alertmanager/
三、配置alertmanager邮件告警
1,编辑alertmanager配置文件
[root@prometheus-server32 ~]# cat /prometheus/softwares/alertmanager/alertmanager.yml
#一、发件人信息配置
global:
#解析失败超时时间;
resolve_timeout: 5m
#【发件人】邮箱
smtp_from: '626080079@qq.com'
#【邮箱官方主机】地址及端口
smtp_smarthost: 'smtp.qq.com:465'
#【发件人】邮箱
smtp_auth_username: '626080079@qq.com'
#【发件人】邮箱授权码
smtp_auth_password: 'ubgotgvzrdgkbfcj'
#发送信息是否tls加密
smtp_require_tls: false
smtp_hello: 'qq.com'
#二、报警的间隔信息配置;
route:
group_by: ['alertname']
group_wait: 5s
group_interval: 5s
#重复报警的间隔时间,如果报警问题没有解决,则会间隔指定的时间继续触发报警,比如5分钟;
repeat_interval: 5m
#采用什么报警方式?本次学习,我们使用邮箱;
receiver: 'email'
#三、接收告警的目标信息编辑;谁来接收告警?
receivers:
#定义接收者名称
- name: 'email'
email_configs:
#【收件人】
- to: '626080079@qq.com'
send_resolved: true
inhibit_rules:
- source_match:
#匹配的告警级别
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']
2,启动alertmanager
[root@prometheus-server32 ~]# ./prometheus/softwares/alertmanager/alertmanager
3,浏览器访问9093端口
至此,告警的中间件就配置完成了;
四、配置prometheus报警规则
1,编辑配置文件
[root@prometheus-server31 ~]# vim /prometheus/softwares/prometheus-2.37.8.linux-amd64/prometheus.yml
global:
scrape_interval: 3s
evaluation_interval: 15s#####################################
#告警的中间件地址(alertmanager的访问地址);
alerting:
alertmanagers:
- static_configs:
- targets:
- 10.0.0.32:9093
#规则文件在哪里?路径;
rule_files:
- "/prometheus/softwares/rules.yml"
#####################################scrape_configs:
- job_name: "prometheus-alert-rule"
static_configs:
- targets: ["10.0.0.41:9100"]
2,编辑规则文件
规则文件内容主要目的是:
1,当监控数据,达到什么数值后。触发alertmanager的报警;
2,报警的内容信息是什么?
[root@prometheus-server31 ~]# vim /prometheus/softwares/rules.yml
groups:
- name: xinjizhiwa-alert
rules:
- alert: 41节点挂掉啦
#当promeQL这个语句=0时(节点挂掉),开始报警
expr: up{instance="10.0.0.41:9100"} == 0
#连续3s=0才触发报警;
for: 3s
labels:
prometheus: xinjizhiwa
#被监控节点ip
node: 10.0.0.41
annotations:
summary: "{{ $lables.instance }} 已停止运行超过 3s!"
3,prometheus的配置文件语法检查
[root@prometheus-server31 prometheus-2.37.8.linux-amd64]# ./promtool check config prometheus.yml
4,重新加载prometheus服务
curl -X POST http://10.0.0.31:9090/-/reload
五、模拟被监控项挂掉
[root@prometheus-node41 ~]# systemctl stop node-exporter.service
等待几秒钟,收到告警邮件
至此,alertmanager邮件告警就学习完毕了。