zabbix安装和配置非常简单,学习成本低,但是zabbix告警却是很烦人的,而且关于告警的中文翻译资料非常少.
在zabbix里面,告警通道配置太繁琐,我们分别来分析下:
上面就是我们经常会用到的报警方案,但是对于zabbix来讲,无论哪种方案的配置都特别复杂,而且没有中文参考资料.我增加新到一家公司,他们的运维就是配置一个User组,配置一个Trigger就了事.
无论是邮件报警、短信报警或微信报警,都会存在告警风暴的问题:如果发现类似断网等大面积故障,而且没有告警保护和收敛机制的话,那电话响一个小时的事情是常有的,更不用说说不清的报警邮件,以及让人疯掉的短信.
后来对于监控系统管理上,我们做了调整,解决了一旦发生报警,立即全员通知的弊端,报警级别严格划分.严重级别轮询升级通知处理,使用java做二次开发,后来做自动化运维平台的时候用zabbix做了重构.
这期间,我们也换过监控宝,New Relic,等收费工具,收费工具虽然好用,但是基于企业信息安全的保障性比较差,当然这些可能作为监控服务提供商不会承认,但我们对自己的企业成本,人力成本,信息安全做综合考虑.
说到安全还有一件很低级可笑的事情,之前服务的一家公司测试服务用的是腾讯云,我介入的时候,腾讯云还处在公测阶段,服务器快要到期的时候我一再强调腾讯云是到期立即回收资源,不像阿里云有一周的缓冲起,不过最终很不幸,还是到期了,而且没有立即充值,所有的努力都化为乌有.好在是测试机,也可能是测试机所以引不起公司的重视吧. 当然这是腾讯云公测时候的事情了,现在貌似也不会到期立即释放资源这一说法了.
彩蛋:
在这里共享一个微信报警---企业号(shell)版本:
#!/bin/bash
###SCRIPT_NAME:TFedu###
###send message from weixin for zabbix monitor###
###develop###
###V7-2014-05-12###
CropID='wx4a5706c1941562f0'
Secret='wWddGauAGusDEkETib9PEwnDacTQ9Ie-w-Fh6HhSUD3rmsQ_ro980vun4jbOAVrS'
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret"
Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F" '{print $4}')
PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"
function body(){
local int AppID=1 # 企业号中的应用id
local UserID=$1 # 部门成员id,zabbix中定义的微信接收者
local PartyID=2 # 部门id,定义了范围,组内成员都可接收到消息
local Msg=$(echo "$@" | cut -d" " -f3-)
# 过滤出zabbix中传递的第三个参数
printf '{'
printf ' "touser": "'"$User""","
printf ' "toparty": "'"$PartyID""","
printf ' "msgtype": "text",'
printf ' "agentid": "'" $AppID ""","
printf ' "text": {'
printf ' "content":"'"$Msg""""
printf ' },'
printf ' "safe":"0"'
printf '}'
}
/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL
当然这个脚本并不是唯一的答案,你可以改写成python脚本.