一. 获取安全码
首先如果我们想要使用qq邮箱接收报警信息,需要先去qq邮箱上获取你自己的一个安全码,如下图
开启后你会获取到一个安全码,用于其他程序去发送邮件到你的邮箱,下面开始配置告警
二. 配置alertmanager发送邮件
注意修改为你的配置,不然过两天我邮箱炸了┭┮﹏┭┮ (3台主机都要写入哦)
#指定将收到的告警发送给谁
cat > /etc/alertmanager/alertmanager.yml <<EOF
global:
resolve_timeout: 5m
smtp_from: '2665483426@qq.com' #发送人的邮箱,自定义
smtp_smarthost: 'smtp.qq.com:465'
smtp_auth_username: '2665483426@qq.com' #你自己的邮箱
smtp_auth_password: 'vxehxwuwnwlreaih' #这个是上面获取安全吗的值,不是你邮箱的密码
smtp_require_tls: false
smtp_hello: 'qq.com'
route:
group_by: ['alertname']
group_wait: 5s
group_interval: 5s
repeat_interval: 5m
receiver: 'email'
receivers:
- name: 'email'
email_configs:
- to: '2665483426@qq.com' #收件人
send_resolved: true
EOF
说明
#全局配置
global:
resolve_timeout: 5m #当告警的状态由"firing"变为"resolve"的以后还要呆多长时间,才宣布告警解除
smtp_from: '2665483426@qq.com' #发件人邮箱
smtp_smarthost: 'smtp.qq.com:465' #qq邮箱smtp端口端口
smtp_auth_username: '2665483426@qq.com' #邮箱地址
smtp_auth_password: 'vxehxwuwnwlreaih' #邮箱安全码
smtp_require_tls: false #不携带证书请求
smtp_hello: 'qq.com'
#路由配置
route: #将不同组的报警路由到不同组的邮件中
group_by: ['alertname'] #告警应该根据那些标签进行分组
group_wait: 5s #一组的告警发出前要等待多少秒,这个是为了把更多的告警一个批次发出去
group_interval: 5s #同一组的多批次告警间隔多少秒后,才能发出
repeat_interval: 5m #重复的告警要等待多久后才能再次发出去
receiver: 'email' #指定路由到email的路由
#发送配置
receivers: #定义谁接收告警,(接收路由的告警)
- name: 'email' #名称对应route中的receiver参数
email_configs: #采用邮箱机制
- to: '2665483426@qq.com' #发送到那里的邮箱
send_resolved: true #是否发送状态恢复的邮件
EOF
重启服务
#因为是集群模式,这里要给3台添加配置并重启
systemctl restart alertmanager
三. 测试--触发告警
上面我们定义的规则是判断up指标中job=node的值是否为0
#job=node所对应的服务的服务是node-exporter
#我们这里停止一台node-exporter服务来测试
systemctl stop node-exporter
触发报警该规则会变更为Pending状态 ,等待15s如果没有恢复则会进入Firing状态
当进入Firing状态后,会将告警信息发送到alertmanager中
当你看到这条时,alertmanager已经拿到了告警数据,然后通过route路由到告警配置中,给配置中的邮箱进行报警
(这里我登陆我们接收报警的邮箱)