zabbix 作为一个分布式监控系统(分布式监控解决方案),支持通过代理(proxy)收集zabbix agent的监控数据然后由zabbix proxy再把数据发送给zabbix server,也就是zabbix proxy 可以代替 zabbix server 收集监控数据,然后把数据汇报给 zabbix server,所以zabbix proxy可以在一定程度上分担了zabbix server 的数据收集压力,从而降低了数据的采集时间、也相应的增加了zabbix server的监控能力。
另外zabbix proxy也区分主动模式和被动模式,通信方式与zabbix server主动模式和被动模式一样,区别是zabbix proxy由于没有zabbix agent的配置,所以zabbix proxy在主动模式下要向zabbix server周期性的向zabbix server申请获取zabbix agent的监控项信息,但是zabbix proxy在被动模式下也是等待zabbix server的连接并接受zabbix server发送的监控项指令,然后再有zabbix proxy向zabbix agent发起请求获取数据。
1.1 编译安装zabbix proxyroot@ubuntu-node1:~# cd /usr/local/src/ #下载源码包 root@ubuntu-node1:/usr/local/src# wget https://cdn.zabbix.com/zabbix/sources/stable/5.0/zabbix-5.0.15.tar.gz #创建zabbix用户 root@ubuntu-node1:/usr/local/src# groupadd -g 1001 zabbix root@ubuntu-node1:/usr/local/src# useradd -u 1001 -g 1001 zabbix #解决依赖关系 root@ubuntu-node1:/usr/local/src/zabbix-5.0.15# apt-get install libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libfontconfig1 libgd3 libiksemel3 libjbig0 libjpeg-turbo8 libjpeg8 liblua5.2-0 libodbc1 libopenipmi0 libsensors4 libsnmp-base libsnmp30 libsodium23 libssh2-1 libtiff5 libwebp6 libxpm4 snmpd ssl-cert ttf-dejavu-core libmysqlclient-dev libxml2-dev libxml2 snmp libsnmp-dev libevent-dev libcurl4-openssl-dev #安装 root@ubuntu-node1:/usr/local/src/zabbix-5.0.15# ./configure --prefix=/apps/zabbix_proxy --enable-proxy --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 root@ubuntu-node1:/usr/local/src/zabbix-5.0.15# make install
启动文件
root@ubuntu-node1:~# vim /lib/systemd/system/zabbix-proxy.service [Unit] Description=Zabbix Proxy After=syslog.target After=network.target [Service] Environment="ConFFILE=/apps/zabbix_proxy/etc/zabbix_proxy.conf" EnvironmentFile=-/etc/default/zabbix-proxy Type=forking Restart=on-failure PIDFile=/tmp/zabbix_proxy.pid KillMode=control-group ExecStart=/apps/zabbix_proxy/sbin/zabbix_proxy -c $CONFFILE ExecStop=/bin/kill -SIGTERM $MAINPID RestartSec=10s TimeoutSec=infinity [Install] WantedBy=multi-user.target1.2 zabbix proxy被动配置
创建数据库及账号
这里在zabbix-server的mysql上创建单独的数据库,生产建议单独安装mysql创建数据库
root@mysql-master:~# mysql mysql> create database zabbix_proxy_pasive character set utf8 collate utf8_bin; Query OK, 1 row affected (0.00 sec) mysql> grant all privileges on zabbix_proxy_pasive.* to proxy@'10.10.100.%' identified by '123456'; Query OK, 0 rows affected, 1 warning (0.00 sec)
导入数据库
数据库文件在源码包的database/mysql/目录下,zabbix-proxy只需要导入schema.sql
root@ubuntu-node1:/usr/local/src/zabbix-5.0.15# pwd /usr/local/src/zabbix-5.0.15 root@ubuntu-node1:/usr/local/src/zabbix-5.0.15# mysql -uproxy -h10.10.100.103 -p123456 zabbix_proxy_pasive < database/mysql/schema.sql1.2.1 配置文件修改
root@ubuntu-node1:~# vim /apps/zabbix_proxy/etc/zabbix_proxy.conf #0为主动,1为被动 ProxyMode=1 #zabbix server服务器的地址或主机名 Server=10.10.100.100 ServerPort=10051 #zabbix proxy配置 Hostname=Zabbix-proxy ListenPort=10051 LogFile=/tmp/zabbix_proxy.log #允许zabbix server执行远程命令 EnableRemoteCommands=1 PidFile=/tmp/zabbix_proxy.pid #数据库配置 DBHost=10.10.100.103 DBName=zabbix_proxy_pasive DBUser=proxy DBPassword=123456 DBPort=3306 #已经提交到zabbix server的数据保留时间 ProxyLocalBuffer=720 #未提交到zabbix server的时间保留时间 ProxyOfflineBuffer=720 #心跳间隔检测时间,默认60秒,范围0-3600秒,被动模式不使用 HeartbeatFrequency=60 #间隔多少秒从zabbix server获取监控项信息 ConfigFrequency=360 #数据发送时间间隔,默认为1秒,范围为1-3600秒,被动模式不使用 DataSenderFrequency=5 #启动的数据采集器数量 StartPollers=10 #java gateway配置 JavaGateway=10.10.100.107 JavaGatewayPort=10052 StartJavaPollers=5 #保存监控项而占用的最大内存 CacheSize=1G #保存监控历史数据占用的最大内存 HistoryCacheSize=1G #历史索引缓存的大小 HistoryIndexCacheSize=128M #监控项超时时间,单位为秒 Timeout=30 TrapperTimeout=300 #毫秒,多久的数据库查询会被记录到日志 LogSlowQueries=3000
启动
root@ubuntu-node1:~# systemctl start zabbix-proxy.service root@ubuntu-node1:~# systemctl enable zabbix-proxy.service1.2.2 zabbix 添加被动代理
注:agent代理程序名称需要与刚刚配置的Hostname=Zabbix-proxy一样
修改zabbix server向zabbix获取监控数据的频率等参数
root@zabbix-server:~# vim /apps/zabbix_server/etc/zabbix_server.conf #启用多少子进程与代理端通信,若代理较多可考虑加大此数值,范围是0-250 StartProxyPollers=20 #proxy被动模式下,server多少秒同步配置文件至proxy,该参数仅用于被动模式下的代理,范围是1-3600*24*7 ProxyConfigFrequency=360 #被动模式下,zabbix server间隔多少秒向proxy请求历史数据 ProxyDataFrequency=60 #重启 root@zabbix-server:~# systemctl restart zabbix-server1.2.4 zabbix agent配置文件
root@web2:~# vim /etc/zabbix/zabbix_agentd.conf PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 Server=10.10.100.100,10.10.100.102 ListenPort=10050 ListenIP=0.0.0.0 StartAgents=3 ServerActive=127.0.0.1 Hostname=10.10.100.106 Include=/etc/zabbix/zabbix_agentd.d/*.conf #重启 root@web2:~# systemctl restart zabbix-agent.service1.2.5 zabbix添加主机并配置使用被动代理
关联被动模板
这里另外在10.10.100.101使用apt安装部署zabbix-proxy,并单独创建主动模式使用的数据库
1.3.1 apt安装zabbix-proxyroot@ubuntu-node1:~# wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+bionic_all.deb root@ubuntu-node1:~# dpkg -i zabbix-release_5.0-1+bionic_all.deb root@ubuntu-node1:~# apt update root@ubuntu-node1:~# apt install libmysqld-dev libmysqlclient-dev libxml2-dev libxml2 snmp libsnmp-dev libevent-dev curl libcurl4-openssl-dev root@ubuntu-node1:~# apt install zabbix-proxy-mysql1.3.2 创建数据库并导入初始化数据
创建数据库
mysql> create database zabbix_proxy_active character set utf8 collate utf8_bin; mysql> grant all privileges on zabbix_proxy_active.* to proxy@'10.10.100.%' identified by '123456';
初始化数据库
root@ubuntu-node1:~# zcat /usr/share/doc/zabbix-proxy-mysql/schema.sql.gz|mysql -uproxy -h10.10.100.103 -p123456 zabbix_proxy_active1.3.3 修改zabbix-proxy配置文件
root@ubuntu-node1:~# vim /etc/zabbix/zabbix_proxy.conf #0为主动,1为被动 ProxyMode=0 Server=10.10.100.100 Hostname=Zabbix-proxy-active ListenPort=10051 LogFile=/var/log/zabbix/zabbix_proxy.log LogFileSize=0 EnableRemoteCommands=1 PidFile=/var/run/zabbix/zabbix_proxy.pid SocketDir=/var/run/zabbix DBHost=10.10.100.103 DBName=zabbix_proxy_active DBUser=proxy DBPassword=123456 DBPort=3306 ProxyLocalBuffer=720 ProxyOfflineBuffer=720 HeartbeatFrequency=60 ConfigFrequency=5 DataSenderFrequency=5 StartPollers=5 JavaGateway=10.10.100.107 JavaGatewayPort=10052 StartJavaPollers=5 SNMPTrapperFile=/var/log/snmptrap/snmptrap.log CacheSize=512M HistoryCacheSize=1G HistoryIndexCacheSize=128M Timeout=30 Externalscripts=/usr/lib/zabbix/externalscripts FpingLocation=/usr/bin/fping Fping6Location=/usr/bin/fping6 LogSlowQueries=3000 #重启 root@ubuntu-node1:~# systemctl restart zabbix-proxy.service root@ubuntu-node1:~# systemctl enable zabbix-proxy.service1.3.4 zabbix web添加主动代理 1.3.5 修改zabbix agent配置文件
这里在刚刚部署的zabbix proxy被动模式的服务器上部署zabbix agent
需要修改zabbix agent中配置文件ServerActive的值为主动模式zabbix proxy
root@ubuntu-node1:~# vim /apps/zabbix_proxy/etc/zabbix_agentd.conf LogFile=/tmp/zabbix_agentd.log Server=10.10.100.100,10.10.100.101 ServerActive=10.10.100.101 Hostname=10.10.100.102 Timeout=30 #启动 root@ubuntu-node1:~# systemctl start zabbix-agent.service root@ubuntu-node1:~# systemctl enable zabbix-agent.service1.3.6 zabbix web添加主机 1.3.7 验证监控数据



