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-1.el6.noarch.rpm
5台虚拟机: 1台 Zabbix Server
2台 Zabbix Proxy(一台主动,一台被动)
2台 Zabbix Client(一台主动采集,一台被动采集)
1
2
3
4
5
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部署
1
2
3
4
5
6
7
8
9
#在所有的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启动捕获进程
1
2
3
4
#192.168.188.30
#在Server执行..
sed -i 's/.*StartTrappers=.*$/StartTrappers=10/' /etc/zabbix/zabbix_server.conf
service zabbix-server restart
2. Proxy主要配置如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#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
1
2
3
4
5
6
7
8
9
10
11
12
#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=/' /etc/zabbix/zabbix_agentd.conf #将默认静态的主机名注释
sed -i 's/.*HostnameItem=(.*)/HostnameItem=/' /etc/zabbix/zabbix_agentd.conf #使用内部key来获取动态的主机名
/etc/init.d/zabbix-agent start
chkconfig zabbix-agent on
4. 在Server Web进行配置..
创建一个新代理
代理的名称很重要,一定要和主机名一致(在proxy中配置为动态获取主机名)
创建一个新主机,使用刚创建的代理来进行采集..
5. 查看proxy日志
如果在部署过程中有什么问题,一定要记得多看看日志..
1
2
3
4
5
6
7
8
9
10
# tail -f /var/log/zabbix/zabbix_proxy.log
2156:20141130:151725.403 proxy #17 started
2158:20141130:151725.407 proxy #19 started
2159:20141130:151725.409 proxy #20 started
2137:20141130:151725.410 received configuration data from server, datalen 7294
2160:20141130:151725.419 proxy #21 started
2161:20141130:151725.423 proxy #22 started
2162:20141130:151725.427 proxy #23 started
2157:20141130:151725.645 proxy #18 started
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启动代理轮询进程
1
2
3
4
5
6
#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主要配置如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#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
1
2
3
4
5
6
7
8
9
10
11
12
#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=/' /etc/zabbix/zabbix_agentd.conf #将默认静态的主机名注释
sed -i 's/.*HostnameItem=(.*)/HostnameItem=/' /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)会讲.
1
2
3
4
5
6
7
8
9
10
11
# tail -f /var/log/zabbix/zabbix_proxy.log
1944:20141130:154643.633 cannot send list of active checks to : host not found
1946:20141130:154827.798 received configuration data from server, datalen 2588
1943:20141130:154844.084 cannot send list of active checks to : host not found
1942:20141130:155044.404 cannot send list of active checks to : host not found
1945:20141130:155243.827 cannot send list of active checks to : host not found
1942:20141130:155449.152 cannot send list of active checks to : host not found
1945:20141130:155557.355 cannot send list of active checks to : host not found
1945:20141130:155649.490 cannot send list of active checks to : host 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查看状态..
可以看到两台主机分别为不同的代理所采集,并且都为可用状态
查看代理的状态~
</eof
</eof
我的代理都弄好了 在图标可用性还是灰色的, 但是数据都能获取到,这是什么问题呀? 求大神指导。
页:
[1]