Zabbix proxy 是一个监控代理服务器,可以实现集中或者分布式的监控。通过proxy代理可以实现多节点,跨区域,成百上千服务器的监控。proxy代理主要适用于下面情况。
1)zabbix监控的主机太多,一台Server支撑不住的情况。
2)服务器在同一个地区不同的机房,通过proxy很容易实现数据的传输和中转。
3)服务器在多个省或者在国外,通过proxy实现分布式部署和监控。
proxy可以部署为主动(Active)模式或被动(passive)模式,通常为了减轻Server端的压力,proxy部署为主动(Active)模式。当proxy部署为主动模式(Active)时,Zabbix Server的负载最小。
架构图:
架构图说明:
1)Zabbix Server:负责把数据写入到数据库,然后通过Apache|Nginx+php在WEB前端显示。
2)Zabbix Proxy:帮助server采集被监控端的数据,并把采集到的数据主动传送给Server,proxy数据库仅做中转。
3)Database:所有的配置信息都存储在数据库里面,proxy数据库数据会定期汇总到Server数据库库里面。
4)Zabbix Agent:agent的作用就是获取host数据,然后将收集到的数据发送给server(主动模式),或者是server主动来拿取数据(被动模式)。
5)Email:通过Qmail|postfix的SMTP负责报警邮件的发送(故障邮件和故障恢复邮件)。
6)SMS:通过SMS发送短消息给负责的用户。
安装配置proxy:
yum install net-snmp yum install net-snmp-devel groupadd -g 5000 zabbix useradd zabbix -u 5000 -g zabbix -s /sbin/nologin tar -zxvf zabbix-2.2.1.tar.gz cd zabbix-2.2.1 ./configure --prefix=/usr/local/zabbix --sysconfdir=/etc/zabbix --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --enable-proxy --enable-agent --with-libcurl make && make install
创建数据库,并导入proxy数据库表结构:
mysql -uroot -p -S /data/mysql/3306/mysql.sock create database shproxydb1 character set utf8; grant all privileges on shproxy01.* to [email protected]‘192.168.3.242‘ identified by ‘^shproxy01$‘; cat database/mysql/schema.sql |mysql -uroot -p zabbix -S /data/mysql/3306/mysql.sock
安装fping,zabbix通过fping检测主机的存活,默认安装在/usr/local/sbin/下面:
tar -zxvf fping-3.8.tar.gz ./configure make && make install #给zabbix加上强制位setuid,以root用户身份构建ICMP包。 chmod u+s /usr/local/sbin/fping
根据proxy监控的主机数量优化zabbxi_proxy配置文件(我的proxy监控了将近400台服务器):
在zabbix server前端添加proxy代理:
总结:
1)proxy 对CPU,内存的要求都比较少,我是HP的服务器4G内存监控将近400台服务器。
2)Zabbix 2.0 对时间很敏感,要求proxy和server 时钟保持同步,否则proxy queue队列会居高不下。
3)proxy ProxyOfflineBuffer我设置了2小时,当zabbix server或者zabbix DB故障的时候在2小时之内恢复故障监控数据不会丢失。
zabbix分布式部署proxy实战