前言
基于promethues+grafana进一步实现alertmangnger警告
| IP | ROLE |
|---|---|
| 192.168.179.140 | server,expoter,alertmanager |
| 192.168.179.191 | pushgateway |
实践
1.部署alertmangnger
下载安装alertmangnger
cd /app
wget https://github.com/prometheus/alertmanager/releases/download/v0.28.1/alertmanager-0.28.1.linux-amd64.tar.gz
tar xf alertmanager-0.28.1.linux-amd64.tar.gz
mv alertmanager-0.28.1.linux-amd64 alertmanager
ln -s /app/alertmanager/alertmanager /usr/bin/ 启动
vim /usr/lib/systemd/system/alertmanager.service
[Unit]
Description=alertmanager by prometheus
After=network.target
[Service]
ExecStart=/app/alertmanager/alertmanager --config.file=/app/alertmanager/alertmanager.yml --storage.path=/app/alertmanager/data
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl restart alertmanager.service- 配置alertmangnger
alertmangnger.yml配置文件仅配置警告方式,这里仅配置如何发邮件
#配置文件解释
cat /app/alertmanager/alertmanager.yml
# 全局配置
global:
resolve_timeout: 5m # dns解析超时时间
smtp_from: 'xxx@qq.com' # 发件人(邮箱)
smtp_smarthost: 'smtp.xx.com:25' # smtp服务器
smtp_auth_username: 'xxx@qq.com' # 邮箱名称
smtp_auth_password: 'xxxxx' # 邮箱授权码
smtp_require_tls: false #加密
#配置收件人间隔时间,收件方式
route:
group_by: ['A','B'] # 传入报警分组标签,如A=a,B=b将多个报警分为单个组
group_wait: 30s # 设置在发送警报之后,Alertmanager 重新等待新警报的时间。如果在指定时间内内没有新的警报加入组,那么这个组的警报将被发送出去。
group_interval: 300s # 发送组警报的时间间隔
repeat_interval: 4h # 对同一个警报组的重复通知之间的时间间隔 不能太短,否则频繁发送邮件会被smtp服务器拒绝
receiver: 'myemail' # 警告接受者(参考receivers)
# 定义模板
#templates:
# - 'xxx/*.tmpl'
#警告接受者
receivers:
- name: 'myemail' #名称
email_configs:
- to: 'xxx@xx.xom' #目标邮箱
# 抑制规则:当在已经触发某些警告的情况下,压制与其相关的其他特定警告不发送通,用于避免一个问题导致的大量连锁问题警告而无法确定真正的错误
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance', 'prod']#配置警告
vim /app/alertmanager/alertmanager.yml
global:
resolve_timeout: 5m
smtp_from: '195xxxxx@163.com'
smtp_smarthost: 'smtp.163.com:25'
smtp_auth_username: '195xxxxx@163.com'
smtp_auth_password: 'EZxxxx'
route:
group_by: ['alertname']
group_wait: 30s
group_interval: 5m
repeat_interval: 1h
receiver: 'myemail'
templates:
- '/app/alertmangnger/templates/*.yaml'
receivers:
- name: 'myemail'
email_configs:
- to: '30xxxxx@qq.com'
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']访问http://192.168.179.140:9093/,查看alertmanager
3.配置promethues服务端
prometheus.yml
#promethues配置文件警告部分解释
cat /app/prometheus/prometheus.yml
#开启警告
alerting:
alertmanagers:
- static_configs:
- targets:
- "ip/域名:9093" #指定alertmanagers所在的主机
#配置rules规则(等同于触发器)
rules_files:
- "报警文件路径/1.yml" #相对于promethues.yaml所在的目录
- "报警路径文件/2.yml"配置警告
vim /app/prometheus/prometheus.yml
alerting:
alertmanagers:
- static_configs:
- targets:
- "localhost:9093"
rule_files:
- "rules/rule1.yml"#警告规则文件解释(promethues.yml中的rule_files指定)
#这里配置的是触发警告的条件(规则)
groups:
- name: name1 #组名称
rules:
- alert: alert1 #规则名称
expr: 判断语句 #故障的判断,这里使用PromeQL
for: 5m #检测间隔(s)
labels:
severity: 1 #优先级
team: 组名
annotations: #描述
summary: "故障" #发送的消息#配置客户端down警告
vim /app/prometheus/rules/rule1.yml
groups:
- name: check_node_status
rules:
- alert: check_node_is_up
expr: up{job=~"prometheus-.*"} == 0
for: 15s
labels:
severity: 1
team: node
annotations:
summary: "{{ $labels.instance }} 节点停止运行"不能混合空格和制表符
4.测试
停止promethues-2节点
systemctl stop pushgateway.service查看节点状态
查看规则值
查看alertmanager中出现的警告组
本文著作权归作者 [ wymm ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。


