服务器监控软件Zabbix初窥

工作中,发现鄙厂使用的服务器监控系统,非常牛逼,CPU,内存,UDP,TCP,eth包量,各种监控应有尽有,此外,还有自定义上报。不光上报,还能对上报数据做绘图,异常数字报警,能发短信、邮件、RTX消息、微信消息等等,无所不能!于是乎,不禁对此类系统神往之,要是自己也能有一套就好了。于是,我找到了Zabbix。

Zabbix始创于2001年,并专门成立了公司来研发运营此款产品(太敬佩老外的专注了)。该公司致力于提供服务器监控的解决方案,经过十多年的积累,就有了我们今天看到的Zabbix 2.x。

Zabbix专门用于监控服务器的各种状态,以及网络服务的状态。它使用C语言开发了服务器端和客户端,使用PHP开发了后台管理界面和配置界面(根正苗红的开源软件啊),使用GPL v2发布。

Zabbix的安装格外简单,这是我所料未及的。想起我曾经在服务器上编译安装各种软件的困难,Zabbix真的只能用顺畅无比来形容。我选择的是使用源码包安装的方式,从sourceforge下载了2.0.6源码,然后解压缩,按照官方Wiki的说明,在服务器上配置了zabbix_server,zabbix_agent,两个选项,然后就直接make install,完全无痛,无感知。

接着,安装前端,只是文件拷贝和Web服务器配置而已,不比WordPress复杂多少。这里有个小插曲,就是zabbix安装的时候,其实不会自动在服务器中建表和填充初始配置数据(我要求太高了),不过看了丰富的log后,我轻易发现了问题的所在,直接搞定了。太赞。

这个监控系统中,有很多的抽象概念,首先是host group,这是监控主机的分组,相似的服务器都在一个组里,比如接入服务器集群,中间层逻辑服务器集群,数据库集群,按照我理解大体是这么个概念。然后是host,就是一台一台的机器,这些机器必须属于某个group。添加完服务器后,下一个概念是item,就是你关心的属性,Zabbix系统内部封装了数百的属性,只要添加你感兴趣的就行了。为了降低操作负担,属性被特地按照系统、软件、不同的机型等多种维度进行了分类,并制作成了模版,如果懒得一个个加,直接应用某个模版,就万事大吉,比如我应用一个Template OS Linux,Application MySQL,就可以实现对服务器基础属性CPU,内存,Swap,网络流量,以及数据库比如uptime,slow query,流量等数据进行监控了。

有了item后,还不够,item只是数据而已,并不是结论。接着,在分析item的基础上,建立trigger,其实就是一系列的数学表达式,对某个属性的值,做数量上的判定,如果满足某一要求,就出发系统事件events。比如CPU超过90%,agent连续5分钟没有上报,DB连接超时等等。

有了events以后,肉戏来了,可以notification了,虽然没有仔细看文档,但是我知道,基本上也是可以触发任何形式的报警,只要你能接入,比如邮件、短信、微信等等之类的,如果没估计错,还有开发接口,就算没有,但是开源软件嘛,你懂的。

瞧瞧人家,多严密的逻辑,多流畅的思维,随便一个开发人员,花不了半天,就能初步部署起来,并有了粗浅的了解。我恍惚觉得,甚至鄙厂的监控平台,也不能与其比肩。如果单就监控的灵活度、可配置、思维的逻辑严谨程度等等方面来看的话。不愧是2001年开始发展十多年的软件了。鄙厂总厂龄,也就稍长3年而已。要说鄙厂平台,估计唯一的优势,就是海量了,除此之外估计都难取胜了。

今天玩得不多,真的只能算是初窥门径,看着还有数十种菜单,真的有点望而却步,但是需要就是人做一切事情的动机,我想,随着后续对服务器运维要求的提高,我恐怕不得不进一步掌握这个软件了。