前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >zabbix告警系统--文末彩蛋

zabbix告警系统--文末彩蛋

作者头像
互联网老辛
发布2018-10-18 17:29:57
1.8K0
发布2018-10-18 17:29:57
举报
文章被收录于专栏:互联网老辛互联网老辛

zabbix安装和配置非常简单,学习成本低,但是zabbix告警却是很烦人的,而且关于告警的中文翻译资料非常少.

在zabbix里面,告警通道配置太繁琐,我们分别来分析下:

  1. 邮件报警: 如需配置邮件报警,就得在Zabbix里配置邮件调用接口。并且Zabbix邮件报警经常发生延迟(Zabbix自身延迟+邮件服务商延迟),更悲催的是,报警邮件往往没人看.既然看邮件不方便,我们就考虑短信报警
  2. 短信报警: 如果配置短信报警,就需要向服务商购买短信服务.确实有很多短信服务都很便宜.而且如果我们用的是阿里云这样的云服务,短信服务可以随时开通(13年时候). 需要设定短信末班,在zabbix配置短信调用接口,而且还要避免某个短信服务商延迟和漏发
  3. 电话报警: 这个是最坑的,在半夜三更把运维人员从睡梦中弄醒,及时解决紧急故障,比起短信来,电话的提醒效果会更好.但是电话报警用不好真是一种骚扰,爱爱到一半电话来了,接还是不接是个问题.我们之前公司,使用电话报警,都需要做二次开发.这时候python就有用了,当然以前脑袋短路,用的java.
  4. 微信报警,是不是又升级了,跟的商形式嘛,配置微信报警,需要申请开通微信的相关服务,然后排期进行针对性开发
  • 首先,微信的订阅号、服务号、企业号,其消息推送限制、消息内容限制、认证前后的人数限制都是不同的 ,真的能分的那么清楚?
  • 其次,如果发生报警风暴,确定你的小心脏接受得了微信里突然多出来的成百上千条报警提示,反正我是已经习惯了.
  • 不过我也是被虐千遍后才想起来可以搞一个只要有运维人员介入维护,就不再发信息,不然老大会疯掉的

上面就是我们经常会用到的报警方案,但是对于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脚本.

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-10-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据架构师专家 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
短信
腾讯云短信(Short Message Service,SMS)可为广大企业级用户提供稳定可靠,安全合规的短信触达服务。用户可快速接入,调用 API / SDK 或者通过控制台即可发送,支持发送验证码、通知类短信和营销短信。国内验证短信秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,全球多服务站点,稳定可靠。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档