首页 > 代码库 > 【跟我学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采集自己..
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进行配置..
创建一个新代理
代理的名称很重要,一定要和主机名一致(在proxy中配置为动态获取主机名)
创建一个新主机,使用刚创建的代理来进行采集..
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状态已经为可用了
代理的状态,
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
创建一个新主机,使用刚创建的代理来进行采集..
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查看状态..
可以看到两台主机分别为不同的代理所采集,并且都为可用状态
查看代理的状态~
本文出自 “晓风残月” 博客,请务必保留此出处http://kinda22.blog.51cto.com/2969503/1584668
【跟我学Zabbix】1.1 Zabbix Proxy(主/被)部署