年、年我在PPTV刚开始工作的时候,第一个开始涉及的工作就是监控系统。当时和我的老板陈文春(现在应该是新浪的总经理吧,好厉害)一起在Nagios和Zabbix中选型,当时觉得Nagios有各种各样的插件,功能很强大,但相应地配置麻烦,比如画图需要cacti配合。而Zabbix看上去是一个一步到位能解决所有问题的工具,虽然界面有点丑,但能满足我们的需求:画图、报警收集数据等。近年来的发展趋势,Zabbix比Nagios更加流行,我看了下GooglTrnds,Nagios的热度在缓慢下降,而Zabbix的热度在上升:
在Zabbix所监控的服务器越来越多情况下,对Zabbix的性能要求也越来越高。因为团队中大家对Oracl有更多的了解,我们Zabbix后端使用的数据库也是Oracl,这个应该是比较少见的,因为我了解下来目前肯定是MySQL更加流行(其实PPTV后来也换成了MySQL)。
在当时Zabbix功能还不是非常强大,有很多需求没法满足。这种情况下我们围绕Zabbix做了很多的工作:
开发了添加监控时使用的工具Spidr,原理很简单:根据不同的规则,在将一台服务器添加到Zabbix监控时,会根据服务器上运行的进程,或者hostnam(PPTV的hostnam中有服务器所属业务的信息)来添加对应的监控;
重新开发了Zabbix的Scrn功能,支持更加方便组合需要的监控数据,因为Zabbix自带的Scrn功能配置比较麻烦;
当出现报警的时候,Zabbix只负责将报警的信息推送出来,由我们自己开发的工具,根据Zabbix的信息,重新组合报警信息,将这一报警事件展现到报警平台中,并且将更加详细的报警邮件发送到CMDB中对应的负责人那。这样可以做到每一个报警事件的认领,追踪和解决。对于一些报警,邮件中能有初步的分析,工程师收到邮件就能大概知道问题发生的地方;
从代码入手,解决了Zabbix在Oracl中执行SQL的一些性能问题;
使用Nagios监控ZabbixMastr和Proxy的UpdatPrcnt,这个指的意义是过去一段时间内,有百分之多少的数据更新了。这个数据能很好地反应Mastr和Proxy的健康程度。
总结一下,我们在这几方面做了开发:
更全面的收集监控数据;
更好的展现监控数据;
梳理了报警的流程和操作;
优化后端数据存储的性能问题(主要是写的性能);
提高Zabbix的可用性。
?现状
在离开PPTV加入唯品会后,我基本没有很深入地去做Zabbix工作,除了做了一个ZabbixLastvalu的patch。简单介绍下这个Patch,Zabbix对于每一个监控项,会在一张表中保存这个监控项最近一次的取值,有了这个指标,可以方便做一些二次开发。而在Zabbix2.2(印象中是这个版本),这一列取消了,而我做的Lastvalu的patch,就是让Zabbix在将监控数据写入数据库的同时,再写一份到一张新的表,而这张表,就是原来Lastvalu的功能,这里要特别感谢唯品会的聂超和侯瑞,解决了C的内存泄露问题。
一直到现在,五年间,有很多身边的同事,或者网络上的朋友在做监控系统的开发,而我也在北京哪家医院白癜风做的好白癜风的偏方治疗