(本文百分之百原创,包括所有的图)Alertmanager用户实现监控的报警功能,它将消息通过Email、HipChat等方式发送通知。
自定义的exporter和Pushgateway是为了手动触发报警,方便调试。

图1 Alertmanager发送告警邮件的整个流程如上图所示:(1) 事先定义好exporter,启动自定义的exporter,手动触发告警条件;(2) exporter push数据给Pushgateway;(3) Prometheus到Pushgateway中pull数据;(4) Prometheus收到报警消息,通知Alertmanager去发邮件,Alertmanager根据配置文件中的信息,让发件人给接收者发邮件。(1)在config.yml 配置SMTP和默认接收者:

(2)在first_rules.yml 配置报警规则:
prometheus自带有一个检查规则的工具promtool,可以用来检查写的规则是否正确:

SUCCESS说明没有问题了。
(3)在prometheus.yml 配置alertmanager的地址和报警规则文件:
用自定义的exporter去手动触发告警的条件(例子中当xiangni_gauge的值变成100时触发告警条件)。
(1)事先写好exporter(这里用Java写的)
这个接口用来设置变量xiangnili_gauge的值:

然后启动自定义的exporter:
然后手动设置Value的值为100:
(2)Pushgateway(自定义exporter用到了Pushgateway)的Web页面:
图中的Value变成了100。
(3)在Prometheus的页面中查看Alerts告警信息:
(4)Alertmanager的Web页面:

这样子说明Alertmanager已经收到了来自Prometheus的告警信息,它开始发告警邮件了。这时正常的话应该就可以收到告警邮件了。
告警的条件触发后,Prometheus将消息传到Alertmanager,然后Alertmanager触发设置的发件人给收件人发邮件。如下图所示,我lixiangni@xxx.com的邮箱收到了来自xiangnili@xxx.com的告警邮件。