1.Alter manager 简述
Alertmanager是一个独立的告警模块,接收Prometheus等客户端发来的警报,之后通过分组、删除重复等处理,并将它们通过路由发送给正确的接收器。Prometheus的警报分为两个部分。Prometheus服务器中的警报规则将警报发送到Alertmanager。该Alertmanager 然后管理这些警报,包括沉默,抑制,聚集和通过的方法,如电子邮件发出通知,对呼叫通知系统,以及即时通讯平台。
设置警报和通知的主要步骤:
1) 设置并配置Alertmanager;
2) 配置Prometheus对Alertmanager访问;
3) 在普罗米修斯创建警报规则;
Alert的三种状态:
1) pending:警报被激活,但是低于配置的持续时间。这里的持续时间即rule里的FOR字段设置的时间,该状态下不发送报警。
2) firing:警报已被激活,而且超出设置的持续时间。该状态下发送报警。
3) inactive:既不是pending也不是firing的时候状态变为inactive。
prometheus触发一条告警的过程:prometheus—>触发阈值—>超出持续时间—>alertmanager—>分组|抑制|静默—>媒体类型—>邮件|钉钉|微信等。
2.安装并修改alertmanager.yml配置文件
global:
# resolve_timeout:解析超时时间
resolve_timeout: 5m
# smtp_smarthost: 使用email打开服务配置
smtp_smarthost: 'smtp.qq.com:465'
# smtp_from:指定通知报警的邮箱
smtp_from: '*****@qq.com'
# smtp_auth_username:邮箱用户名
smtp_auth_username: '*****@qq.com'(发邮箱)
# smtp_auth_password:授权密码
smtp_auth_password: '*****'(IMAP的授权码)
# smtp_require_tls:是否启用tls
smtp_require_tls: false
route:
# group_by:采用哪个标签作为分组的依据
group_by: ['alertname']
# group_wait:分组等待的时间
group_wait: 10s
# group_interval:上下两组发送告警的间隔时间
group_interval: 10s
# repeat_interval:重复发送告警时间。默认1h
repeat_interval: 1m
# receiver 定义谁来通知报警
receiver: 'mail'
receivers:
# name:报警来源自定义名称
- name: 'mail'
# email_configs:通过邮箱发送报警
email_configs:
# to:指定接收端email
- to: '*****@qq.com'(收邮箱)
smtp_smarthost: 这里为 QQ 邮箱 SMTP 服务地址,官方地址 smtp.qq.com 端口为 465 或 587,同时设置开启 IMAP/SMTP 服务。
smtp_auth_password: 这里为第三方登录 QQ 邮箱的授权码,非 QQ 账户登录密码,否则会报错,获取方式在 QQ 邮箱服务端设置开启 IMAP/SMTP 服务时会提示。
3.写service文件启动alert manager
[Unit]
Description=alertmanager
After=local-fs.target network-online.target network.target
Wants=local-fs.target network-online.target network.target
[Service]
ExecStart=/.../alertmanager-0.23.0/alertmanager --config.file=/.../alertmanager-0.23.0/alertmanager.yml
Restart=on-failure
[Install]
WantedBy=multi-user.target
启动alert manager指令:
# systemctl daemon-reload
# systemctl enable alertmanager.service
# systemctl start alertmanager.service
# systemctl status alertmanager.service
# systemctl stop alertmanager.service(启动完成之后可以关掉服务)
浏览器访问9093端口查看alertmanager效果:
4.Prometheus配置alertmanager连接和告警规则
在prometheus.yml中增加关于alertmanager的配置:
告警配置连接:
alerting:
alertmanagers:
- static_configs:
- targets:
- 192.168.32.129:9093
告警规则配置文件位置:
rule_files:
- "rules/*.yml"
监控alert manager:
- job_name: 'alertmanager'
static_configs:
- targets: ['192.168.32.129:9093']
在prometheus.yml的同级目录下,创建rules目录,在该rules目录下创建node_alerts.yml文件:
# groups:组告警
groups:
# name:组名。报警规则组名称
- name: general.rules
# rules:定义角色
rules:
# alert:告警名称。 任何实例5分钟内无法访问发出告警
- alert: NodeFilesystemUsage
# expr:表达式。 获取磁盘使用率 大于百分之30 触发
expr: 100 - (node_filesystem_free_bytes{mountpoint="/",fstype=~"ext4|xfs"} / node_filesystem_size_bytes{fstype=~"ext4|xfs"} * 100) > 30
# for:持续时间。 表示持续一分钟获取不到信息,则触发报警。0表示不使用持续时间
for: 1m
# labels:定义当前告警规则级别
labels:
# severity: 指定告警级别。
severity: warning
# annotations: 注释 告警通知
annotations:
# 调用标签具体指附加通知信息
summary: "Instance {{ $labels.instance }} :{{ $labels.mountpoint }} 分区使用率过高" # 自定义摘要
description: "{{ $labels.instance }} : {{ $labels.job }} :{{ $labels.mountpoint }} 这个分区使用大于百分之30% (当前值:{{ $value }})" # 自定义具体描述
配置完之后要通过service方式启动n
配置完之后要通过service方式启动node exporter和Prometheus服务。
5.发送/接收告警邮件
采用qq邮箱发送/接收告警邮件,结果如图所示,注意一定要在邮箱处开启IMAP/SMTP服务,并记录授权密码。
后续尝试了一下用126邮箱发送,qq邮箱接收也是可以的,只要对应发送邮箱配置了IMAP/SMTP协议即可。