zabbix作为一个开源的监控系统,使用越来越广泛。在对zabbix使用了一段时间后,我认为应该做一些总结,把我所了解的zabbix写出来。
先来看一副图:
zabbix采用server去监控你所要监控的设备(服务器,交换机等),server是整个系统最为核心的部分。当server部署好之后,它开始主动拉取或被动的接收被监控设备的各种数据。
现在,仔细看这个图,其中zabbix server就是我们需要运行的server程序,当这个server程序运行好之后,默认会打开10051端口来接收数据,这些接收到的数据,会存入数据库中。当然,为了方便查看数据以及更改某些设置,我们通过web server连接数据库,将其中的数据通过各种方式展现出来,同时也能将某些配置项写如数据库。server与database与web服务之间的这种关系,使得它们可以搭建在同一台机器上也可以搭建在不同的机器上。或者说,在某些情况下,为了提升zabbix的性能,会将这些系统分别搭建在不同的主机上。我采用的方式是将数据库分离出去。
external scripts,这是个很好的功能,zabbix允许在某些特定的情况下,去运行某些脚本,比如当zabbix监控的主机ping不通时,我们需要及时发现网络状况,但人又不可能实时响应,就可以定义一个外部脚本,当ping不通某主机时,触发一个动作,去执行一个外部脚本,而这个脚本去traceroute某主机并将之记录下来,这样就能在事后对当时的情况进行排查了。
zabbix os agent,zabbix获取监控设备的数据的方式有很多种,我所使用中最常用的两种是agent和snmp。agent是zabbix的客户端,当在服务器安装上客户端后,在其的配置文件中指定server端的ip,server端就能获取agent端的数据了。snmp是一种协议,通过这种协议,只要设备开放了server端对其的查询权限,server端就能去获取监控设备的各项数据了。一般来说,服务器采用agent方式,交换机路由器等无法安装agent的设备,使用snmp协议。不过也有服务器采用snmp的方式,比如zabbix结合openmanage监控硬件时。
proxy,当要监控多个机房或者server端与被监控设备无法通信时,就可采用proxy。prxoy也可用来分摊server的压力。
用一句话概括zabbix,就是zabbix server程序通过agent方式或者snmp等方式从监控设备上获取数据,将之插入数据库中,再运用web server展现出来。