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:
1
2
3
4
5
6
7
8
9
|
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数据库表结构:
1
2
3
4
|
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/下面:
1
2
3
4
5
|
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小时之内恢复故障监控数据不会丢失。