Zabbix proxy主动模式的实现
zabbix作为一个分布式监控系统(分布式监控解决方案),支持通过代理(proxy)收集zabbix agent的监控数据然后由zabbix proxy再把数据发送给zabbix server,也就是zabbix proxy可以代替zabbix server收集监控数据,然后把数据汇报给zabbix server,所以zabbix proxy可以在一定程度上分担zabbix server的数据收集压力,从而降低数据的采集时间、也相应的增加了zabbix server的监控能力。
zabbix proxy区分主动模式和被动模式,通信方式与zabbix agent主动模式和被动模式一样,区别是zabbix proxy由于没有zabbix agent的配置,所以zabbix proxy在主动模式下要周期性地向zabbix server申请获取zabbix agent的监控项信息,而zabbix proxy在被动模式下也是等待zabbix server的连接并接受zabbix server发送的监控项指令,然后zabbix proxy再向zabbix agent发起请求获取数据。
zabbix proxy对比zabbix server
功能 | zabbix proxy | zabbix server |
轻量级 | 是 | 相对重量级 |
图形 | 无 | 带图形控制界面 |
可以独立工作 | 是,可以独立采集数据并存储 | 是,集数据采集、存储、分析、展示于一体 |
易维护 | 是,配置完成后基本无需管理 | 维护也不难 |
独立数据库 | 保存少量近期数据 | 保存指定时间内的所有数据 |
报警通知 | 否,代理服务器不发送邮件通知 | 支持邮件、短信等告警机制 |
zabbix proxy的版本选择
zabbix proxy的版本必须和zabbix server版本一致,否则会导致出现zabbix proxy与zabbix server不兼容问题
环境准备
五台机器:
zabbix_agent 5.0 被动模式(已安装) Zabbix_java_gateway 5.0 (已安装) 10.0.0.7
MariaDB-10.4.22(已安装) zabbix_server 5.0(已安装) 10.0.0.17
Tomcat-8.5(已安装) 10.0.0.27
zabbix_agent 5.0 主动模式(已安装)10.0.0.37
MariaDB-10.4.22(已安装) zabbix_proxy 5.0 主动模式 10.0.0.47
关闭防火墙和selinux
#关闭selinux
[root@zabbix_proxy ~]#sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
#关闭防火墙
[root@zabbix_proxy ~]#systemctl disable --now firewalld
#重启生效
[root@zabbix_proxy ~]#reboot
1. 安装zabbix rpm源
[root@zabbix_proxy ~]#rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
[root@zabbix_proxy ~]#sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
[root@zabbix_proxy ~]#yum clean all
2. 安装zabbix proxy
[root@zabbix_proxy ~]#yum install -y zabbix-proxy-mysql zabbix-agent
#编辑配置文件 /etc/yum.repos.d/zabbix.repo
[root@zabbix_proxy ~]#vim /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
...
enabled=1
...
3. 创建zabbix proxy数据库
[root@zabbix_proxy ~]#mysql -uroot -p
Enter password:
MariaDB [(none)]> create database zabbix_proxy_active character set utf8 collate utf8_bin;
MariaDB [(none)]> create user proxy@'10.0.0.%' identified by 'proxy';
MariaDB [(none)]> grant all privileges on zabbix_proxy_active.* to proxy@'10.0.0.%';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> quit;
4. 修改zabbix proxy配置文件
[root@zabbix_proxy ~]#vim /etc/zabbix/zabbix_proxy.conf
ProxyMode=0 #0为主动模式,1为被动模式
Server=10.0.0.17 #zabbix server服务器的IP地址或主机名
ServerPort=10051 #zabbix server监听端口,对于处于被动模式的代理,该参数将被忽略
Hostname=zabbix_proxy_active #代理服务器名称,需要与zabbix server添加代理时的proxy name一致
ListenPort=10051 #zabbix proxy监听端口
EnableRemoteCommands=1 #允许zabbix server执行远程命令
DBHost=10.0.0.47 #数据库服务器IP地址
DBName=zabbix_proxy_active #数据库名称
DBUser=proxy #数据库用户名
DBPassword=proxy #数据库密码
DBPort=3306 #数据库端口
ProxyLocalBuffer=720 #已经提交到zabbix server的数据保留时间
ProxyOfflineBuffer=720 #未提交到zabbix server的数据保留时间
HeartbeatFrequency=60 #心跳检测时间间隔,默认60秒,对于处于被动模式的代理,该参数将被忽略
ConfigFrequency=60 #代理间隔多少秒从zabbix server获取监控信息,对于处于被动模式的代理,该参数将被忽略
DataSenderFrequency=30 #代理将每隔多少秒向zabbix server发送收集的数据,对于处于被动模式的代理,该参数将被忽略
StartPollers=6 #启动的数据采集器数量
StartPollersUnreachable=3 #不可达主机的轮询进程的初始实例启动数量
StartTrappers=5 #预启动的Trappers进程数量
StartPingers=3 #ICMP ping进程的初始实例数量
JavaGateway=10.0.0.7 #JavaGateway服务器IP地址
JavaGatewayPort=10052 #JavaGateway服务端口
StartJavaPollers=5 #启动多少个线程采集数据
ListenIP=0.0.0.0 #监听地址
HousekeepingFrequency=1 #多少小时清理一次代理端数据库的 history数据
CacheSize=16M #配置缓存大小
StartDBSyncers=4 #zabbix和数据库同步数据的进程数量
HistoryCacheSize=16M #保存监控项的历史缓存大小
HistoryIndexCacheSize=16M #历史数据索引缓存的大小
Timeout=30 #监控项的超时时间,单位为秒
LogSlowQueries=3000 #多久的数据库查询会被记录到日志,单位为毫秒
[root@zabbix_proxy ~]#grep "^[a-Z]" /etc/zabbix/zabbix_proxy.conf
ProxyMode=0
Server=10.0.0.17
ServerPort=10051
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.0.0.47
DBName=zabbix_proxy_active
DBUser=proxy
DBPassword=proxy
DBPort=3306
ProxyLocalBuffer=720
ProxyOfflineBuffer=720
HeartbeatFrequency=60
ConfigFrequency=60
DataSenderFrequency=30
StartPollers=6
StartPollersUnreachable=3
StartTrappers=5
StartPingers=3
JavaGateway=10.0.0.7
JavaGatewayPort=10052
StartJavaPollers=5
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
ListenIP=0.0.0.0
HousekeepingFrequency=1
CacheSize=16M
StartDBSyncers=4
HistoryCacheSize=16M
HistoryIndexCacheSize=16M
Timeout=30
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
5. 查看数据库
[root@zabbix_proxy ~]#mysql -uproxy -pproxy -h10.0.0.47
MariaDB [(none)]> show databases;
+---------------------+
| Database |
+---------------------+
| information_schema |
| zabbix_proxy_active |
+---------------------+
6. 主动模式导入数据库
[root@zabbix_proxy ~]#cd /usr/share/doc/zabbix-proxy-mysql-5.0.25/
[root@zabbix_proxy zabbix-proxy-mysql-5.0.25]#gunzip schema.sql.gz
[root@zabbix_proxy zabbix-proxy-mysql-5.0.25]#mysql -uproxy -pproxy -h10.0.0.47 zabbix_proxy_active
MariaDB [zabbix_proxy_active]> source /usr/share/doc/zabbix-proxy-mysql-5.0.25/schema.sql
7. 启动zabbix proxy进程
#启动zabbix proxy进程,并设置开机自启
[root@zabbix_proxy ~]#systemctl enable --now zabbix-proxy.service zabbix-agent.service
[root@zabbix_proxy ~]#systemctl status zabbix-proxy.service zabbix-agent.service
[root@zabbix_proxy ~]#systemctl status zabbix-proxy.service zabbix-agent.service
● zabbix-proxy.service - Zabbix Proxy
Loaded: loaded (/usr/lib/systemd/system/zabbix-proxy.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2022-07-14 19:04:18 CST; 13s ago
Process: 2311 ExecStart=/usr/sbin/zabbix_proxy -c $CONFFILE (code=exited, status=0/SUCCESS)
● zabbix-agent.service - Zabbix Agent
Loaded: loaded (/usr/lib/systemd/system/zabbix-agent.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2022-07-14 19:04:16 CST; 15s ago
Process: 2312 ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE (code=exited, status=0/SUCCESS)
[root@zabbix_proxy ~]#ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:10050 *:*
LISTEN 0 128 *:10051 *:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 100 [::1]:25 [::]:*
LISTEN 0 128 [::]:10050 [::]:*
LISTEN 0 80 [::]:3306 [::]:*
8. zabbix web添加主动代理
点击【管理-agent代理程序-创建代理】
9. zabbix agent使用主动代理
修改或者新添加一台zabbix agent,并使用zabbix主动模式代理服务器进行监控
点击【配置-主机-10.0.0.37-web2】
10. 修改zabbix agent配置文件
[root@centos7 ~]#vim /etc/zabbix/zabbix_agentd.conf
Server=10.0.0.17,10.0.0.47 #zabbix server与zabbix active代理的地址
ServerActive=10.0.0.47 #修改zabbix agent中配置文件ServerActive的值为主动模式zabbix proxy
[root@centos7 ~]#grep "^[a-Z]" /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.0.17,10.0.0.47
ListenPort=10050
ListenIP=0.0.0.0
StartAgents=5
ServerActive=10.0.0.47
Hostname=10.0.0.37
Timeout=30
Include=/etc/zabbix/zabbix_agentd.d/*.conf
[root@centos7 ~]#systemctl restart zabbix-agent.service
11. zabbix web验证当前主机状态
12. 验证主机监控数据