alertmanager邮件告警

alertmanager邮件告警

这篇文章是基于之前博客进行开展的:关于计划任务的一个小需求(https://www.cnblogs.com/windysai/p/14352248.html)

利用了prometheus 下 process-exporter对crond计划任务进程监控的, grafana内置的监控报警有点丑,如下图:

 

 

而且配置不够灵活,没有分组,静默等东西配置。所以就有了这个alertmanager的玩意研究了。之前搞k8s的监控接触过,但是理解不深,没搞清楚整个过程怎么报警起来的。

老实说,因为改用alertmanager,默认是不支持钉钉告警的,我还没弄出来 = =(会单独写一篇文章);这点grafana做的好,直接配置机器人token的就能发,省事好多。

  先从简单入手,测了个alertmanager的邮件告警(k8s也是这么弄的),大致有个印象。配置告警规则让prometheus读 ——》 alertmanager配置告警处理方式。。。

  用了NodeFilesystemUsage,根目录/ 磁盘分区使用率超过30%就告警,一直没发(用163邮箱作为发送方发给我的qq邮箱),我当时还自我良好,看到下面这个图不以为意。

 老实说,你不装node_exporter(监控服务器的基础资源,如:内存、CPU、网络等资源),怎么可能会有返回值呢

 所以第一个事,乖乖装好,才能通过符合PromQL的语法查询出值来的

  

 第一个体会是:监控+告警整个流程梳理。

   实际上整个流程,简单概括:

  (1)组件采集数据(像node_exporter,process_exporter等)

  (2)暴露类似这样的url:http//本机ip:端口/metrics(curl localhost:9100/metrics 会有值的!!!这里端口是node_exporter默认监听端口)

  (3)prometheus通过拉取方式读数据,最终给grafana展示

  (4)alertmanager告警

 

 第二个用alertmanager的体会是:静默设置。

 

  看到这个蛮头痛的,图是微信设置收取QQ邮件截的。默认每5分钟发一次

  静默规则设置参考这个的:http://www.linuxe.cn/post-518.html

 

 让它2个小时内不要发(都知道有这么一回事了)。我特别说下图上的Matchers的Name和Value怎么填。是配置给prometheus读的告警规则那里来的,相当于做了个匹配规则,把serverity为warning的告警全部关掉2小时(注意时间 +8小时,刚好跟我下午2点的时间一致的)

 

 如果想关掉静默设置,可以直接让它Expire,当然也可以根据需要继续Edit 静默规则,写出更符合当前监控告警需求的

 

 

 第三个用alertmanager的体会是:自定义告警模板

 

  贼难看 = =。

  做法是这样的:

  (1)配置告警规则 

  (2)编写邮件模板文件:email.tmpl   ——》新增

[root@ljy alertmanager]#cat /usr/local/src/monitor/alertmanager/template_alert/email.tmpl 
{{ define "email.html" }}
    {{ range .Alerts }}
<pre>
    ========start==========
    告警程序: prometheus_alert 
    告警级别: {{ .Labels.severity }} 
    告警类型: {{ .Labels.alertname }} 
    故障主机: {{ .Labels.instance }} 
    告警主题: {{ .Annotations.summary }}
    告警详情: {{ .Annotations.description }}
    触发时间: {{ .StartsAt.Format "2019-12-14 16:01:01" }}
    ========end==========
</pre>
    {{ end }}
{{ end }}

 

  (3)alertmanager配置文件,添加自定义告警模板,配置发送人

    (4)重启alertmanager,效果图如下:

 

posted @ 2021-02-09 23:16  windysai  阅读(1332)  评论(0编辑  收藏  举报