zabbix_proxy的部署需要用到proxy本身及myslq数据库,其中数据库用来存储proxy从agent端获取到的"key:value"数据。
因此需要的安装包为:
zabbix-4.0.5.tar.gz
mariadb(base源yum安装)
proxy分布式架构工作原理
proxy默认主动模式:
即:①agent会打开一个随机端口向proxy的10051端口发起请求,请求监控项,proxy本身没有监控项,所以proxy会通过本身的10051端口把请求发送给server的10051端口,请求agent的监控项(通过agent配置文件中的hostname识别不同的agent),server会通过数据库查找到agent对应的监控项,把监控项返还给proxy,proxy返还给agent,agent从而获得了监控项,进行数据采集;②agent把采集到的数据发送给proxy,proxy会把数据临时记录到数据库中,proxy根据配置文件中所设定的时间,把数据推送给server,server再把数据记录到数据库中;
主被动模式都是agent第一次获得监控项后,后面会根据该监控项采集数据,当达到server或者proxy配置文件中设置的指定同步时间后,由proxy向server获取最新的监控项,或由server把最新的监控项推送给proxy。
这样设置的好处:可以有效减轻server端的压力。将压力分散给各proxy端。
建议使用主动模式,不容易出错。
proxy主动模式工作过程:
proxy本身没有监控项,所以proxy会通过本身的10051端口把请求发送给server的10051端口,请求agent的监控项,然后等待zabbix_server端将主机的监控项发送回来。
proxy被动模式工作过程:
Proxy等待zabbix_server端的关于proxy端代理的agent的监控请求,当zabbix_Server端将监控请求发来后,proxy端再根据agent端是主动模式还是被动模式来选择proxy是被动等待数据(agent主动)还是proxy主动去索要监控数据(agent被动)。
agent主动:agent会打开一个随机端口向proxy的10051端口发起请求,请求监控项。
agent被动:agent在10050端口等待来自proxy端的监控项请求,接收到监控项请求数据后,开始收集数据,收集好后再发送给proxy端。
在配置文件/opt/zabbix/etc/zabbix_proxy.conf中:
#ProxyMode=0 #{0表示主动式,1表示被动式;默认是主动式}
然后再结合zabbix_server的web端的proxy配置的Active(主动)、Passive(被动)来使用;
使用zabbix_proxy注意事项
1.当proxy配置文件被修改,则zabbix_proxy和zabbix_server都需要重启。
# /opt/zabbix/sbin/zabbix_proxy -c /opt/zabbix/etc/zabbix_proxy.conf
# /opt/zabbix/sbin/zabbix_server
2.当proxy由被动模式改为主动模式,或由主动模式改为被动模式,也需要将zabbix_proxy和zabbix_server重启。
# /opt/zabbix/sbin/zabbix_proxy -c /opt/zabbix/etc/zabbix_proxy.conf
# /opt/zabbix/sbin/zabbix_server
3.总之:涉及到zabbix_proxy端的修改,server端和proxy端都需要重启服务。
配置要点:
①启动服务顺序:配置Proxy或Agent时要先在Web中配置Zabbix Server,后启动Proxy或Agent服务;
②配置顺序:先配置Server后配置Proxy,最后配置Agent。
③Zabbix Proxy下的Zabbix Agent配置文件中的Server字段(ServerActive或Server)配置成Proxy的IP地址。
④注意Server端的“sending configuration data to proxy "{Zabbix Proxy Hostname}", datalen {data length}”,日志中出现这个记录才表明Proxy已经从Server端获取配置了。
zabbix_proxy编译安装
一、yum安装mariadb数据库
#yum install mariadb-server mariadb mariadb-devel -y
#systemctl restart mariadb
#systemctl enable mariadb
二、源码编译安装zabbix_proxy
#yum install -y tar gcc make gcc-c++ net-snmp-devel libxml2-devel libcurl-devel pcre-devel
#useradd -s /sbin/nologin zabbix
#cd /usr/local/src/
#将源码包拷贝进去
#tar -zxvf zabbix-4.0.5.tar.gz
#cd zabbix-4.0.5
#./configure --prefix=/opt/zabbix --enable-proxy --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2
#make && make install
#chown -R zabbix:zabbix /opt/zabbix
可选择配置zabbix_proxy的环境变量,便于执行zabbix_proxy命令
验证proxy的安装
1.二进制文件/opt/zabbix/sbin/zabbix_proxy
2./opt/zabbix/sbin/zabbix_proxy --version
三、初始化mariadb数据库
#mysql_secure_installation (设置root密码,及一些初始设置)
#mysql -uroot -h 127.0.0.1
>create database zabbix character set utf8 collate utf8_bin;
>grant all privileges on zabbix.* to zabbix@'127.0.0.1' identified by 'zabbixpwd';
>set names utf8;(设置编码)
>use zabbix;(进入zabbix数据库)
>source /home/gaokai/zabbix-4.0.34/database/mysql/schema.sql;(导入表结构,zabbix_server需要导入三个文件,zabbix_proxy只导入一个文件;)
注意:导入的文件不是编译后的zabbix文件夹,而是zabbix-4.0.5.tar.gz解压后的zabbix-4.0.5文件夹。
如图
四、编辑zabbix_proxy的配置文件
#vim /usr/local/zabbix/etc/zabbix_proxy.conf
Hostname=bjproxy(与网页上指定的proxy配置一样)
Server=192.168.237.49(zabbix_server的地址)
LogFile=/usr/local/zabbix/zabbix_proxy.log
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=zabbixpwd
DBPort=3306
ConfigFrequency=60
启动:zabbix_proxy
验证:
1.启动zabbix_proxy
2.进程:#ps -aux |grep zabbix_proxy
3.端口:#netstat -nutlp
4.日志
五、配置完毕后,启动zabbix_proxy
正常情况下,启动zabbix_proxy后会有如下报警,是因为zabbix_web页面还未对proxy进行配置,当zabbix_web页面配置完毕后,该报警则会消失。
zabbix_proxy.conf配置文件
#ProxyMode=0 #{0表示主动式,1表示被动式;proxy默认是主动式}
Server=192.168.221.129 #zabbix_server地址
#ServerPort=10051 #默认是10051
Hostname=proxy #proxy代理的Hostname,要与web配置一致。
DBHost=127.0.0.1 #数据库地址
DBName=zabbix #数据库名
DBUser=zabbix #数据库zabbix的user
DBPassword=zabbixpwd #数据库zabbix的密码
#ProxyLocalBuffer=0 #{范围:0-720h}proxy在本地保存数据的时间,默认是0。当本地数据将由第三方应用程序使用时,则可以使用此参数。
#ProxyOfflineBuffer=1 #{范围:1-720h}proxy将保留数据N小时,以防与zabbix服务器没有连接。同时旧数据将会丢失。
#HeartbeatFrequency=60 #{范围:0-3600s}心跳消息的频率(秒)。用于监控在zabbix_server端该proxy的可用性。0表示心跳检查禁用。被动模式下的proxy,此参数将被忽略。
#ConfigFrequency=3600 #{范围:1-3600*24*7 (s)},proxy从zabbix服务器检索配置数据的频率(秒)。被动模式下的proxy,此参数将被忽略。
#DataSenderFrequency=1 #{范围:1-3600s} 代理将每隔N秒向zabbix_server端发送收集的数据。被动模式下的proxy,此参数将被忽略。
#StartPollers=5 #{范围:0-1000},轮询器中pre-forked实例的数量,默认是5。
#HistoryCacheSize=16M #{范围:128k-2G},历史缓存的大小,以字节为单位。用于存储历史数据的共享内存大小。
#CacheSize=8M #{范围:128k-64G},配置缓存的大小,以字节为单位。共享内存大小,用于存储主机和项目数据。
#Timeout=3 #{范围:1-30s}设置等待时间,即超时时间。
#User=zabbix #默认的运行用户。