工作记录
今天是2021年8月12日,星期四,线上办公第8??天 学校继续封闭,没办法啦,只能线上办公🧑🏻?💻
任务清单
今日任务承接昨天的进度,基于昨天完成了区块链节点信息方面的报警系统判断逻辑的书写,今天进一步完善报警系统,解决了下面的问题:
任务记录
任务一:解决报警不及时的问题 嘶~这个问题整了将近一天,真的让人头大 废话少说,记录一下整个过程: 要想让报警及时反馈,必须要理解下面的这些参数意思以及整个报警的原理及过程:
- prometheus.yml文件:
scrape_interval scrape_timeout evaluation_interval - alertmanager.yml文件:
group_by group_wait group_interval repeat_interval - rules.yml文件:
如果你觉得很多很麻烦,可以先把下面三个参数搞明白: 1??[ group_interval: | default = 5m ] How long to wait before sending a notification about new alerts that are added to a group of alerts for which an initial notification has already been sent. 【翻译】在发送有关新警报的通知之前等待多长时间,新警报将添加到已发送初始通知的一组警报中。
2??[ group_wait: | default = 30s ] How long to initially wait to send a notification for a group of alerts. Allows to wait for an inhibiting alert to arrive or collect more initial alerts for the same group. 【翻译】最初等待发送一组警报通知的时间。 允许等待抑制警报到达或为同一组收集更多初始警报。
3??[ repeat_interval: | default = 4h ] How long to wait before sending a notification again if it has already been sent successfully for an alert. 如果已成功发送警报,则在再次发送通知之前等待多长时间。
光知道参数还不行,还必须要知道报警原理,给大家推荐两篇文章,感觉文章写的比较简洁易懂
报警原理看这篇👉Prometheus 一条告警的触发流程、等待时间 Prometheus的报警时机👉我的 Prometheus 到底啥时候报警? 两篇文章配合食用,效果最佳🤗
感觉我只理解了其中的一部分,原理还没有吃透,写一下我对其中一个小点的理解:
alertmanager在收到报警信息以后,先等个 group_wait 设定的时间,目的是在等待的时间里,如果有同样 group 的报警信息发到alertmanager那了,alertmanager会把同一 group 里的报警信息汇总到一起发出去(比如说一条webhook消息里包含多个报警信息,注意这些报警信息一定是属于同一个 group 的)。这就像赶火车一样,比如说第二个警报来了,如果错过了第一个警报的等待时间 group_wait ,那第二个警报肯定不能和第一个警报一起走了,毕竟第一个警报已经发出去了,但这时候发送规则就不一样了,后面来的警报不再汇总,变成隔 group_interval 设定的时间就发送一个,警报一直有它就一直发。 并且经过我的实验发现,如果一个警报多次被触发,那么每次报警的时间间隔为 group_interval +repeat_interval
说了这么多,要想让你的报警及时,只需要把参数 group_interval 降低即可。我把它改成了 5s ,即 group_interval: 5s 。让它发完第一个警报后少等一会同组的警报。
任务二:飞书机器人报警信息文案优化 技术层面的问题解决了,就该着眼于产品层面的问题了。毕竟做技术也好、做销售也好,不管是啥,自己做的东西得让别人认可才行呀 于是乎,考虑到公司的实际要求与同事们阅览方便,修改了prometheus报警后的推送模版
公司采用的是飞书,所以利用飞书webhook机器人来精准实施报警。在将飞书与alertmanager对接的过程中,我才用了PrometheusAlert插件,实现了webhook的转发(可能是自己的配置问题,我在alertmanager.yml文件的webhook设置下,url写飞书的webhook地址就是没法传递报警信息)。
强推一下PrometheusAlert插件,虽然还在持续开发中,但现在已经非常强大,能够支持多种应用场景(飞书、钉钉、企业微信、Email、腾讯云短信与腾讯云电话)与应用环境(Prometheus、Grafana、Graylog2、Graylog3、SonarQube、Jenkins与WebHook)。 PrometheusAlert里面还支持简单易上手的报警模版,跟着里面的教程很容易学会配置 放两张我的成品🤗 带尺寸的图片: 哈哈哈,美滋滋🥳
总结
我的第二个项目指日可待了,明天争取把报警系统整合到Grafana中,将警报情况以可视化的样子加入到之前开发的Dashboard中 明天继续加油呀,干就完了🤠
|