在官方最新的Zabbix 2.4分布式架构中已经除了node(节点)模式,已经不在支持。

我也曾在2.x的版本中使用node的多层分布式节点模式中多次碰到过Server间的配置一致性混乱的情况,且修复起来非常的麻烦..

所以【跟我学系列】 不介绍node的部署。

使用代理的目的也显而易见:减轻Server的采集压力或跨运营商网络的监控质量不好,又或者在监控链路的中间有防火墙设备等等....


1. 环境准备

    CentOS 6.4

    关闭selinux和iptables

    安装repo:http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm

    5台虚拟机: 1台 Zabbix Server                 

                2台 Zabbix Proxy(一台主动,一台被动)

                2台 Zabbix Client(一台主动采集,一台被动采集)

               

192.168.188.30    Server
192.168.188.31    Proxy(active)
192.168.188.32    Proxy(pass)
192.168.188.33    Client(active)
192.168.188.34    Client(pass)

               


    其实你在做这个实验的时候,使用2台或三台虚拟机完全是可以的。。

    1台Zabbix Server, 1台Zabbix Proxy

    Zerver 通过Proxy收集数据,Proxy采集自己..

    【跟我学Zabbix】1.1 Zabbix Proxy(主/被)部署_第1张图片



2. Zabbix Server部署

    请参考【跟我学Zabbix】1.0 Zabbix C/S架构的快速部署



3.  Zabbix Proxy部署

#在所有的Proxy上执行 安装初始化....
yum install zabbix-proxy-mysql zabbix-agent mysql-server mysql -y
/etc/init.d/mysqld start
mysql -e "create database zabbix_proxy character set utf8 collate utf8_bin;"
mysql -e "grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'zabbix';"
cd /usr/share/doc/zabbix-proxy-mysql-2.4.2/create/
mysql -uroot zabbix_proxy < schema.sql
sed -i 's/^.*DBPassword=.*$/DBPassword=zabbix/' /etc/zabbix/zabbix_proxy.conf
cp /etc/zabbix/zabbix_proxy.conf{,.bak}


    a) Proxy主动模式

       主动模式:是Server启用捕获进程用来接收主动发来的数据...(Agent主动,sender或Proxy 发来的),Proxy收集数据,然后主动把数据推送到Server。

       常见的应用场景如:Server可以暴露IP和端口,Proxy不能暴露.

       在主动模式中,配置检索的时间、心跳、数据发送频率是由每个Proxy在配置文件中独立定义的。

       1. 在Server启动捕获进程

#192.168.188.30
#在Server执行..
sed -i 's/.*StartTrappers=.*$/StartTrappers=10/' /etc/zabbix/zabbix_server.conf
service zabbix-server restart


       2. Proxy主要配置如下 

#192.168.188.31
#在Proxy修改主机名,这个主机名很重要,必须和后面的在Web UI中填写的主机名一致.
sed -i 's/HOSTNAME=.*/HOSTNAME=proxy-active/' /etc/sysconfig/network
hostname proxy-active

cat > /etc/zabbix/zabbix_proxy.conf < 
  


       3. 配置Client Active

#192.168.188.33
#首先在client-active修改主机名
sed -i 's/HOSTNAME=.*/HOSTNAME=client-active/' /etc/sysconfig/network
hostname client-active

yum install zabbix-agent -y
sed -i 's/Server=.*/Server=192.168.188.31/' /etc/zabbix/zabbix_agentd.conf              #这里的ServerIP要填写oroxy-active的
sed -i 's/ServerActive=.*/ServerActive=192.168.188.31/' /etc/zabbix/zabbix_agentd.conf  #这里的ServerIP是用于Agent(主动)模式的.
sed -i 's/^Hostname=\(.*\)/#Hostname=\1/' /etc/zabbix/zabbix_agentd.conf                #将默认静态的主机名注释
sed -i 's/.*HostnameItem=\(.*\)/HostnameItem=\1/' /etc/zabbix/zabbix_agentd.conf        #使用内部key来获取动态的主机名
/etc/init.d/zabbix-agent start
chkconfig zabbix-agent on


       4. 在Server Web进行配置..

        创建一个新代理

    【跟我学Zabbix】1.1 Zabbix Proxy(主/被)部署_第2张图片


        代理的名称很重要,一定要和主机名一致(在proxy中配置为动态获取主机名)

    【跟我学Zabbix】1.1 Zabbix Proxy(主/被)部署_第3张图片


        创建一个新主机,使用刚创建的代理来进行采集..

    【跟我学Zabbix】1.1 Zabbix Proxy(主/被)部署_第4张图片


       5. 查看proxy日志

        如果在部署过程中有什么问题,一定要记得多看看日志..

[root@proxy-active ~]# tail -f /var/log/zabbix/zabbix_proxy.log 
  2156:20141130:151725.403 proxy #17 started [http poller #1]
  2158:20141130:151725.407 proxy #19 started [history syncer #1]
  2159:20141130:151725.409 proxy #20 started [history syncer #2]
  2137:20141130:151725.410 received configuration data from server, datalen 7294
  2160:20141130:151725.419 proxy #21 started [history syncer #3]
  2161:20141130:151725.423 proxy #22 started [history syncer #4]
  2162:20141130:151725.427 proxy #23 started [self-monitoring #1]
  2157:20141130:151725.645 proxy #18 started [discoverer #1]
  2140:20141130:151730.648 enabling Zabbix agent checks on host "client-active": host became available


       6. Server查看状态..

        可以看到主机的Agent状态已经为可用了

    【跟我学Zabbix】1.1 Zabbix Proxy(主/被)部署_第5张图片


        代理的状态,

    【跟我学Zabbix】1.1 Zabbix Proxy(主/被)部署_第6张图片



    b) Proxy被动模式

      被动模式:是Server启用代理轮询进程,周期性的从被动代理获取数据.

       常见的应用场景如:Server不可以暴露端口,Proxy可以暴露端口.

       在被动模式中,配置检索的时间、数据发送频率是由Server来定义的。。


       1. 在Server启动代理轮询进程

#192.168.188.30
#在Server开启代理轮询进程,配置发送给代理的刷新时间、从代理收集数据的间隔时间
sed -i 's/.*StartProxyPollers=.*$/StartProxyPollers=5/' /etc/zabbix/zabbix_server.conf 
sed -i 's/.*ProxyConfigFrequency=.*/ProxyConfigFrequency=300/' /etc/zabbix/zabbix_server.conf 
sed -i 's/.*ProxyDataFrequency=.*/ProxyDataFrequency=3/' /etc/zabbix/zabbix_server.conf 
/etc/init.d/zabbix-server restart


       2. Proxy主要配置如下

#192.168.188.32
#在Proxy修改主机名
sed -i 's/HOSTNAME=.*/HOSTNAME=proxy-pass/' /etc/sysconfig/network
hostname proxy-pass

#可以发现被动代理和主动代理的配置少了3个参数..,是要配置在Server中的。
cat > /etc/zabbix/zabbix_proxy.conf < 
  


       3. 配置Client Pass

#192.168.188.34
#首先在client-active修改主机名
sed -i 's/HOSTNAME=.*/HOSTNAME=client-pass/' /etc/sysconfig/network
hostname client-pass

yum install zabbix-agent -y
sed -i 's/Server=.*/Server=192.168.188.32/' /etc/zabbix/zabbix_agentd.conf              #这里的ServerIP要填写oroxy-active的
sed -i 's/ServerActive=.*/ServerActive=192.168.188.32/' /etc/zabbix/zabbix_agentd.conf  #这里的ServerIP是用于Agent(主动)模式的.
sed -i 's/^Hostname=\(.*\)/#Hostname=\1/' /etc/zabbix/zabbix_agentd.conf                #将默认静态的主机名注释
sed -i 's/.*HostnameItem=\(.*\)/HostnameItem=\1/' /etc/zabbix/zabbix_agentd.conf        #使用内部key来获取动态的主机名
/etc/init.d/zabbix-agent start
chkconfig zabbix-agent on



       4. 在Server Web进行配置.. 

        在创建一个新代理,将代理模式改为被动式,并且添加上被动代理的IP

    【跟我学Zabbix】1.1 Zabbix Proxy(主/被)部署_第7张图片

       


        创建一个新主机,使用刚创建的代理来进行采集..

    【跟我学Zabbix】1.1 Zabbix Proxy(主/被)部署_第8张图片


       5. 查看proxy日志

         日志最后一行可以看到client-pass已经成功采集到了,其中的'cannot send list of active checks to '这个不是错误,后期的Agent(active)会讲.

[root@localhost create]# tail -f /var/log/zabbix/zabbix_proxy.log
  1944:20141130:154643.633 cannot send list of active checks to [192.168.188.34]: host [client-pass] not found
  1946:20141130:154827.798 received configuration data from server, datalen 2588
  1943:20141130:154844.084 cannot send list of active checks to [192.168.188.34]: host [client-pass] not found
  1942:20141130:155044.404 cannot send list of active checks to [192.168.188.34]: host [client-pass] not found
  1945:20141130:155243.827 cannot send list of active checks to [192.168.188.34]: host [client-pass] not found
  1942:20141130:155449.152 cannot send list of active checks to [192.168.188.34]: host [client-pass] not found
  1945:20141130:155557.355 cannot send list of active checks to [192.168.188.34]: host [client-pass] not found
  1945:20141130:155649.490 cannot send list of active checks to [192.168.188.34]: host [client-pass] not found
  1944:20141130:155829.609 received configuration data from server, datalen 7324
  1937:20141130:155835.557 enabling Zabbix agent checks on host "client-pass": host became available


       6. Server查看状态..

        可以看到两台主机分别为不同的代理所采集,并且都为可用状态

    【跟我学Zabbix】1.1 Zabbix Proxy(主/被)部署_第9张图片


        查看代理的状态~

    【跟我学Zabbix】1.1 Zabbix Proxy(主/被)部署_第10张图片