zabbix收敛
Posted 悦明的杂谈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zabbix收敛相关的知识,希望对你有一定的参考价值。
最近写了一个收敛程序,其实功能上来看挺简单的,重要的是理清思路,因为你做的时候没有设计文档,得一点点琢磨然后调试。
首先要搞明白收敛什么,收敛的是报警信息,具体哪些报警信息,是那些重复的报警项,比如说一个机房挂了,在zabbix里面每台机器都报zabbix agent unreachable ,如果每个机器都报一次,会把微信或者短信接口挤爆,这个时候就需要收敛一下。
那么接下来得搞清楚zabbix本身是怎么发送报警信息的,是通过action定义,然后调用email或者是脚本发送报警信息,通过原始的功能是没有办法做到这个功能的,这时候就要考虑hack这个环节,需要调用脚本的时候做点文章,把信息存下来过滤掉重复的,然后再发送,而不是马上发送,这就是大体思路。
编码的时候就要考虑很多细节了,我是设计了解耦,两个程序分别做收下消息,发送消息的活,这样设计不用每次修改都要重新跑一编整个流程,两个程序共同的数据结构要放在公共库里面,golang是有类似java那种包管理的,直接引用就好了。
收敛的key point是根据什么收敛,网上有个是根据event.id ,但是那个好像行不通,每个event都不一样吧,我是根据trigger name ogin 收敛的(事实证明这个是真正可用的,他的python代码 github有,但是我几乎没怎么看,看别人写的代码有时候是件挺操蛋的事,特别是没有注释的代码,这件事老外说起来就是read the fucking code!),我设计的时候几乎没有参考任何代码实现! 坏处就是重写了好多版本。。
去重的算法也是一个问题,不好设计,你可以做个结构体把统计次数设计进去,这个实现就很多样了,我不说我的实现可以买个关子。这里有一个点就是对一般的报警和恢复通知需要分别去重处理,如果你之前没有考虑这层,那么妥妥的需要一些大的改动了。
做下来以后觉得缺陷还是有,没有100%的满意,可能做到百分之七八十吧。之后慢慢改进。
最后祝关注的朋友2018中秋节快乐,快乐工作快乐生活!
以上是关于zabbix收敛的主要内容,如果未能解决你的问题,请参考以下文章