写在之前
Alertmanager 只是在 Prometheus Server 触发报警规则后,接收报警内容的组件程序,把报警内容发送给 Alertmanager 后,由 Alertmanager 根据label标签决定如何发送、发送给谁、邮件报警、还是微信报警、报警内容是否聚合、是否抑制等。
邮件报警
邮件报警如何配置、验证,前面安装 alertmanager 的时候已经总结过,如果忘记了,可以回顾下之前的文章,这里主要说下配置文件的含义。
cat alertmanager-configmap.yaml
以上结构非常的清晰,主要有global 全局配置、route 路由、receivers 接收者、templates 模板等几部分组成。
1. global 全局配置,可以定义一些全局使用的,这里配置了一个邮箱报警时,需要有一个发送者,由谁从哪里发送出去;
2. route 路由,就是把报警信息发送给谁,这里可以配置多个routes,根据报警级别、严重程度,决定使用邮件发送,还是企业微信发送,是发送给运维,还是leader等;
3. receivers 接收者,这里定义报警接收途径,上面只定义了一个邮箱,可以配置叮叮报警、企业微信报警、自定义Webhook、短信等接收报警途径;
4. templates 模板配置,定制化一些报警模板,文章会给出实例。
下面给出配置中常用的几个字段的含义:
重要字段说明 | 含义 |
resolve_timeout | 设置解析超时时间; |
group_by | 按什么聚合,一起发送报警 ; |
group_wait | 组报警等待时间 ,等待是否有相同组的报警出来,如果有,一起发送; |
group_interval | 组报警时间间隔,上一次组报警与这次组报警的最小间隔; |
repeat_interval | 重复报警时间间隔; |
receiver | 报警通知的接收者 |
send_resolved | 报警是否发送恢复邮件; |
match | 报警按标签完全匹配 |
match_re | 报警按标签正则匹配 |
企业微信报警
注册企业微信
https://work.weixin.qq.com/ 很简单直接注册即可。
创建应用
选择应用管理选项卡,创建应用如下图:
AgentId:1000002
Secret:BLZM-b1cLROgPSujUO3X2Pjlj5QQ0rCoBIn3xVk-U6Q
修改alertmanager 配置
cat alertmanager-configmap.yaml
corp_id:企业唯一标识,在"我的企业" --> "CorpID";
to_user:'@all' ,发送报警到所有人,也可以指定用户;
agent_id:应用ID,创建应用时产生的AgentId;
api_secret:应用对应的secret,创建应用时产生的Secret
message:这里使用了一个模板,让报警更为直观,个人可以根据爱好,自定义即可;
secret: 企业微信("企业应用"-->"自定应用"[Prometheus]--> "Secret") ;
模板定义
templates:这个选项,指定模板文件在哪里,可以通过configmap的形式,创建Pod时,加载configmap即可。
# cat cm.yaml
创建Pod时需要挂载
验证
手动把etcd一台关掉进程,看是否报警,如果报警,然后再开启;
silenced(静默)
静默就是设置一个维护时间,这段时间不再报警,如下:
创建默认
创建完成后,在Alerts中就没有了,会出现在silences标签下面,在这里可以设置取消或者编辑
inhibited(抑制)
配置文件中添加报警抑制规则 inhibit_rules,这个对于告警收敛非常有用,可以自行google测试下。
总结
Alertmanager通过labels进行匹配,其实它是根据之前定义报警规则中定义的labels进行标签匹配,确认使用哪个路由,根据路由决定使用哪种方式报警,还总结了如何使用模板进行个性化定制报警等,最后我司使用的企业微信实现方式。
这里有遗留一个问题,时差问题,后面文章解决。