首页 > 代码库 > 【跟我学Zabbix】1.1 Zabbix Proxy(主/被)部署

【跟我学Zabbix】1.1 Zabbix Proxy(主/被)部署

在官方最新的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采集自己..

    1ahBC.png



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 <<EOF
Server=192.168.188.30                     #填写Server的IP,Proxy会将收集到的数据发往这个IP。
HostnameItem=system.hostname              #通过内部的key获取当前主机名.
LogFile=/var/log/zabbix/zabbix_proxy.log  
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
DBName=zabbix_proxy                       #Proxy连接的数据库
DBUser=zabbix                             #连接数据库的用户名
DBPassword=zabbix                         #连接数据库的秘密
DBSocket=/var/lib/mysql/mysql.sock
ProxyLocalBuffer=0                        #当数据发送到Server,还要在本地保留多少小时.不保留
ProxyOfflineBuffer=3                      #当数据没有发送到Server,在本地保留多少小时,3小时。
HeartbeatFrequency=60                     #心跳检测代理在Server的可用性
ConfigFrequency=300                       #代理多久从Server获取一次配置变化,默认3600秒.
DataSenderFrequency=3                     #代理收集到数据后,多久向Server发送一次..
ExternalScripts=/usr/lib/zabbix/externalscripts
EOF

/etc/init.d/zabbix-proxy start
chkconfig zabbix-proxy on


       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进行配置..

        创建一个新代理

    EDa8q.jpg


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

    zAx1.jpg


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

    BhICL.jpg


       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状态已经为可用了

    UqVK4.jpg


        代理的状态,

    UwR2S.jpg



    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 <<EOF
ProxyMode=1                            #这个配置为1时,代理变为被动代理模式,默认为0主动代理模式。
Server=192.168.188.30                  #填写Server的IP,Proxy会将收集到的数据发往这个IP
HostnameItem=system.hostname             
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=zabbix
DBSocket=/var/lib/mysql/mysql.sock
ProxyLocalBuffer=0                     #当数据发送到Server,还要在本地保留多少小时.不保留
ProxyOfflineBuffer=1                   #当数据没有发送到Server,在本地保留多少小时,3小时。
ExternalScripts=/usr/lib/zabbix/externalscripts
EOF


       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

    EFPhr.jpg

       


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

    qiHIR.jpg


       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查看状态..

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

    4MJiR.jpg


        查看代理的状态~

    WVvSy.jpg



本文出自 “晓风残月” 博客,请务必保留此出处http://kinda22.blog.51cto.com/2969503/1584668

【跟我学Zabbix】1.1 Zabbix Proxy(主/被)部署