Zabbix proxy 是一个监控代理服务器,可以实现集中或者分布式的监控。通过proxy代理可以实现多节点,跨区域,成百上千服务器的监控。proxy代理主要适用于下面情况。
1)zabbix监控的主机太多,一台Server支撑不住的情况。
2)服务器在同一个地区不同的机房,通过proxy很容易实现数据的传输和中转。
3)服务器在多个省或者在国外,通过proxy实现分布式部署和监控。
    proxy可以部署为主动(Active)模式或被动(passive)模式,通常为了减轻Server端的压力,proxy部署为主动(Active)模式。当proxy部署为主动模式(Active)时,Zabbix Server的负载最小。

    架构图:

zabbix分布式部署proxy实战_zabbix proxy 搭建

    架构图说明:

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 shproxy01 character set utf8;
grant all privileges on shproxy01.* to zabbix@'192.168.3.242' identified by '^shproxy01$';
cat database/mysql/schema.sql |mysql -uroot -p shproxy01 -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分布式部署proxy实战_zabbix proxy 搭建_02

    在zabbix server前端添加proxy代理:

zabbix分布式部署proxy实战_zabbix proxy 搭建_03

    总结:

    1)proxy 对CPU,内存的要求都比较少,我是HP的服务器4G内存监控将近400台服务器。

    2)Zabbix 2.0 对时间很敏感,要求proxy和server 时钟保持同步,否则proxy queue队列会居高不下。

    3)  proxy ProxyOfflineBuffer我设置了2小时,当zabbix server或者zabbix DB故障的时候在2小时之内恢复故障监控数据不会丢失。