我从2013年5月开始研究zabbix,研究的版本是2.0.6,到现在也马上2年了,目前生产版本还是2.0.6.
现在我公司1000+的服务器无论是物理机还是vmware、openstack的云主机、docker容器等等都使用zabbix进行监控。
当前监控方式为:zabbix=>proxy=>client
当前报警方式为:6个等级报警(未分类、消息、警告、一般严重、严重、灾难)全部通过短信或者邮件来通知,严重及其以上使用自动语音报警方式通知。
一、语音报警介绍
1、为什么使用语音报警
之前我这里招聘了3个监控运维,然后他们使用轮班制度来进行报警通知,但人总是会有疲倦,并且夜间的时候,易睡无法及时的进行报警发现与通知,为了解决这个情况,我开发了一个语音报警平台,针对zabbix的报警通知做一个补充,可以配合zabbix默认的升级机制,实现报警垂直升级+自动语音报警,还可以web化的查看报警内容与处理报警信息。
2、传统报警与语音报警区别
传统报警多为:邮件模式或者短信模式
对于休息时间,无法上网或睡觉,会导致无法及时执行报警,耽误报警发现与处理时间,造成更多的损失。如果有大量报警,会导致查看遗漏重要信息
如果使用语音模式报警,在休息期间,不需要在电脑旁或者打开邮件,就可以通过电话知晓报警信息;即使夜间睡觉,也能通过电话来及时知晓并处理。
二、语音报警效果图
我一般看新内容都喜欢先看看效果图,如果满足我需求才深入研究,所以我也先给大家展示一下效果图,大家觉得满足在向下看,不满足可以退出。
1、报警界面
在右侧的“处理”列里,可以看到报警是已经恢复,所以“处理”列信息都是不可以使用,并且为已处理,如果是报警未恢复,则可以通过点击处理,手动关闭语音报警升级下去。
2、语音报警结果界面(也就是上面图片里“详情”)
上图为发送语音报警的报警信息与接收人的信息,下面是报警垂直事件升级的效果图
3、垂直报警事件升级
可以看看这个报警升级了4次,每次升级的间隔为10分钟,分别联系了3个人,其中第二次联系的时候,是对方不接(从备注no one answer the phone可以看出)
三、如何使用语音报警
1、结合zabbix分布式监控系统
语音报警只是通知的方式,检测报警并发现还需要使用监控系统,推荐使用zabbix分别是监控,支持多平台(如果redhat系列、Ubuntu系列、windows系列);
在zabbix监控发现报警,通过使用语音报警接口来把报警内容电话通知给对应负责人。
2、事件升级机制(Escalations)
举例:如果监控主机出现报警,需要第一时间通知,但如果通知后,报警在一定时间仍然存在,或者电话通知后,由于对方夜间休息,没有接收,这样就会延误处理时间,影响业务;
方法:zabbix事件升级机制(Escalations)
优点:
Zabbix监控自带,兼容性好l发送形式能自定义(目前包括:短信通知、邮件通知、语音电话通知);
根据不同报警等级来进行对于通知l自定义报警升级顺序、时间等;
一直通知问题直到问题解决。
3、语音接口选择
目前国内也有语音接口,但我测试感觉一般,并且花费贵,所以我选择了国际厂商nexmo接口(不是打广告,对方也不给我钱,这个接口很稳定、速度很快、并且价格便宜)
Nexmo是国际知名短信云服务公司l在23个国家70多个运行商均能提供短信与语音功能;
Nexmo的企业客户包括Airbnb、Viber和ICQ等;
按需收费;
通知时间快,通常在5秒内;
强大的售后与技术支持l基础的报表功能。
四、语音报警平台案例
1、架构信息
监控服务:使用zabbix分布式监控;
事件升级:使用zabbix的Escalations垂直模式,从负责人、直属领导、总监等一级一级的升级;
语音通知接口:nexmo的tts;
平台软件架构:python+tornado+bootstrap
2、架构图
3、实现功能
严重等级报警使用语音接口进行报警通知(严重等级报警包括:重启、超时、进程不存在等);
报警垂直升级;
报警合并(同一联系人的报警,会合并为一条在发送);
平台化查看报警主机信息、语音报警通知信息等。
4、zabbix处理报警方式
5、报警垂直事件升级流程图
6、难点
后端:
报警检测间隔(默认10分钟)
垂直事件升级顺序(前2次为第一联系人,第二联系人、运维主管、运维总监)
报警合并(当前为60秒内同一联系人报警合并为1条)
报警通知时间(白天为报警出现后5分钟,晚上为10分钟,重启报警为1分钟)
报警自助处理(如果报警短时间不能解决,则可以通过平台里的处理按钮不进行事件升级)
语音平台用户组权限(从zabbix数据库里获取用户组权限)
前端:
Tornado的架构学习
Bootstrap与jquery的学习
Highchart的学习
目前我公司从去年12月上线测试此平台,上传测试2个月满足需求,所以从2015年2月份正式上线此平台,截止到现在已经运行6个月运行正常,并且报警及时、准确。
现在我这里已经取消了监控运维,通过使用此平台,每个月能节省1w+以上的人员成本,此平台的成本仅为15-17欧元(12欧元固定来电号码租用费用,5元左右的报警电话费用),换为人民币为105-114元左右。
此平台由于还在优化与新功能开发中,所以暂不开源,大家开源参考这个架构来自行定义自己的语言报警平台,有问题可以留言一起交流。