
前言在大型监控场景中单一的Zabbix Server往往难以应对跨地域、大规模的监控需求。网络延迟、带宽限制、设备数量等因素都可能成为监控系统的瓶颈。本文将详细介绍Zabbix Proxy的部署与应用通过实际案例演示如何构建分布式监控架构实现跨地域数据中心的统一监控。一、为什么需要Zabbix Proxy1.1 什么是Zabbix ProxyZabbix Proxy是Zabbix Server的代理服务它能够代替Zabbix Server采集数据然后将数据统一发送给Zabbix Server。它的功能和Zabbix Server非常类似主要作用是作为Zabbix Server的代理分担监控压力。1.2 Zabbix Proxy的组成Zabbix Proxy主要由两部分组成Zabbix Proxy服务负责数据采集和转发Proxy数据库临时存储采集数据非永久存储重要说明Zabbix Proxy的数据库必须与Zabbix Server的数据库分开部署。虽然可以在同一台机器上创建两个数据库但建议物理分离以保证性能。1.3 数据库的缓存机制Proxy的数据库不用于永久存储采集数据而是作为数据中转缓存临时存放采集到的监控数据防止Proxy向Server传输数据失败存储从Zabbix Server拉取的监控配置信息数据成功发送到Server后本地临时数据会被自动清理1.4 适用场景Zabbix Proxy主要适用于以下场景场景说明远程区域监控监控分布在不同地理位置的数据中心或分支机构网络不稳定环境监控本地网络连接不稳定的区域Proxy可在断网时缓存数据大规模监控Zabbix监控上千台设备时使用Proxy减轻Server压力简化分布式维护统一管理分布在不同网络的监控节点1.5 核心优势------------------ ------------------ ------------------ | 远程监控区域 | | 代理节点 | | 监控中心 | | (上海机房) | --- | Zabbix Proxy | --- | Zabbix Server | | 192.168.38.0/24 | | 双网卡 | | 192.168.38.30 | ------------------ ------------------ ------------------降低Server负载提高系统扩展性网络中断时本地缓存数据保证数据不丢失简化防火墙配置只需Proxy与Server互通支持加密传输提高安全性二、分布式监控案例实战2.1 案例背景本案例模拟北京监控中心与上海数据中心的联合监控场景北京机房监控中心部署Zabbix Server192.168.38.30上海机房大量服务器和业务需要监控网络隔离两个机房网络无法直接互通解决方案在上海机房部署Zabbix Proxy作为数据中转2.2 网络拓扑----------------------------------------- | 北京监控中心 | | Zabbix Server (192.168.38.30) | ----------------------------------------- ↑ │ (数据上报) │ ----------------------------------------- | 上海中转服务器 (Zabbix Proxy) | | 内网IP: 192.168.38.129 | | 外网IP: 192.168.38.160 | ----------------------------------------- ↑ ↑ │ │ ------------- -------------- | 上海服务器1 | | 上海服务器2 | | 192.168.38.130| | 192.168.38.131| -------------- ---------------2.3 环境规划主机名IP地址操作系统角色zabbix-server192.168.38.30AlmaLinux 9.1Zabbix Server北京zabbix-proxy192.168.38.129 / 192.168.38.160CentOS 7.9Zabbix Proxy上海中转shanghai-server1192.168.38.130CentOS 7.9被监控服务器上海网络说明Zabbix Proxy配置双网卡内网地址192.168.38.129用于连接上海机房Agent外网地址192.168.38.160用于与北京Server通信。三、Zabbix Proxy安装与配置3.1 安装Zabbix Proxy软件在Zabbix Proxy服务器192.168.38.129/160上执行以下操作# 1. 添加Zabbix官方仓库 [rootzabbix-proxy ~]# rpm -ivh https://repo.zabbix.com/zabbix/6.4/rhel/7/x86_64/zabbix-release-latest.el7.noarch.rpm # 2. 安装Zabbix Proxy和Agent2 [rootzabbix-proxy ~]# yum install -y zabbix-proxy-mysql zabbix-sql-scripts zabbix-agent23.2 部署MySQL数据库Zabbix Proxy需要独立的数据库存储缓存数据这里采用二进制方式部署MySQL# 下载并安装MySQL以二进制方式为例 [rootzabbix-proxy ~]# wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz [rootzabbix-proxy ~]# tar -xvf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz -C /usr/local/ [rootzabbix-proxy ~]# mv /usr/local/mysql-8.0.33-linux-glibc2.12-x86_64 /usr/local/mysql # 创建MySQL用户和数据目录 [rootzabbix-proxy ~]# useradd -r -s /sbin/nologin mysql [rootzabbix-proxy ~]# mkdir -p /data/mysql [rootzabbix-proxy ~]# chown -R mysql:mysql /data/mysql # 初始化数据库 [rootzabbix-proxy ~]# /usr/local/mysql/bin/mysqld --initialize --usermysql --datadir/data/mysql3.3 创建Proxy数据库# 登录MySQL [rootzabbix-proxy ~]# /usr/local/mysql/bin/mysql -uroot -p Enter password: # 创建数据库和用户 mysql CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; mysql CREATE USER zabbixlocalhost IDENTIFIED WITH mysql_native_password BY zabbix123; mysql GRANT ALL PRIVILEGES ON zabbix.* TO zabbixlocalhost; mysql SET GLOBAL log_bin_trust_function_creators 1; mysql FLUSH PRIVILEGES; mysql QUIT;3.4 导入Proxy表结构[rootzabbix-proxy ~]# cd /usr/share/zabbix-sql-scripts/mysql/ [rootzabbix-proxy mysql]# cat proxy.sql | /usr/local/mysql/bin/mysql --default-character-setutf8mb4 -uzabbix -p zabbix Enter password: zabbix1233.5 配置Zabbix Proxy编辑/etc/zabbix/zabbix_proxy.conf配置文件# /etc/zabbix/zabbix_proxy.conf # Zabbix Server地址北京监控中心 Server192.168.38.30 # Proxy主机名在Web界面添加时需要保持一致 Hostnameshanghai-proxy # 数据库连接配置 DBHost127.0.0.1 DBNamezabbix DBUserzabbix DBPasswordzabbix123 # 可选配置数据发送频率秒 ProxyLocalBuffer0 ProxyOfflineBuffer1 HeartbeatFrequency60 ConfigFrequency3600 DataSenderFrequency13.6 配置Zabbix Agent2Proxy自身监控编辑/etc/zabbix/zabbix_agent2.conf# /etc/zabbix/zabbix_agent2.conf # 被动模式Server地址 Server192.168.38.30 # 主动模式Server地址 ServerActive192.168.38.30 # 主机名 Hostname192.168.38.160注意这里的Hostname建议使用Proxy的外网IP方便在Zabbix Server端识别。四、被监控服务器配置4.1 安装Zabbix Agent2在上海被监控服务器192.168.38.130上安装Agent2[rootshanghai-server1 ~]# rpm -ivh https://repo.zabbix.com/zabbix/6.4/rhel/7/x86_64/zabbix-release-latest.el7.noarch.rpm [rootshanghai-server1 ~]# yum install -y zabbix-agent24.2 配置Agent指向Proxy编辑/etc/zabbix/zabbix_agent2.conf# /etc/zabbix/zabbix_agent2.conf # 被动模式指向Zabbix Proxy的内网IP Server192.168.38.129 # 主动模式指向Zabbix Proxy的内网IP ServerActive192.168.38.129 # 主机名唯一标识 Hostname192.168.38.130关键点Agent配置的Server地址必须是Zabbix Proxy的地址而不是直接指向Zabbix Server。五、启动服务5.1 启动Zabbix Proxy# 设置开机自启 [rootzabbix-proxy ~]# systemctl enable zabbix-proxy [rootzabbix-proxy ~]# systemctl enable zabbix-agent2 # 启动服务 [rootzabbix-proxy ~]# systemctl start zabbix-proxy [rootzabbix-proxy ~]# systemctl start zabbix-agent2 # 检查服务状态 [rootzabbix-proxy ~]# systemctl status zabbix-proxy [rootzabbix-proxy ~]# systemctl status zabbix-agent25.2 启动被监控服务器Agent[rootshanghai-server1 ~]# systemctl enable zabbix-agent2 [rootshanghai-server1 ~]# systemctl start zabbix-agent2 [rootshanghai-server1 ~]# systemctl status zabbix-agent2六、Zabbix Web界面配置6.1 添加Proxy代理登录Zabbix Web界面导航到管理 → Proxy → 创建Proxy配置参数如下参数填写内容Proxy名称shanghai-proxy必须与配置文件中的Hostname一致Proxy模式主动式推荐或被动式IP地址/DNS192.168.38.160Proxy外网IP端口100516.2 添加被监控主机导航到配置 → 主机 → 创建主机填写主机信息参数填写内容主机名称shanghai-server1可见名称上海服务器-1主机IP192.168.38.130主机组选择Shanghai Servers或自定义组监控代理shanghai-proxy必须选择刚创建的Proxy模板选择Linux by Zabbix agent等模板6.3 验证监控数据配置完成后等待几分钟主动模式默认60秒刷新一次检查主机状态是否变为已启用最新数据中是否开始显示监控指标可用性是否显示为绿色ZBX七、验证与排障7.1 检查Proxy日志# 查看Proxy日志确认与Server连接正常 [rootzabbix-proxy ~]# tail -f /var/log/zabbix/zabbix_proxy.log # 正常日志示例 # 2023-05-13 11:12:34.567 [Z3001] connection to database zabbix succeeded # 2023-05-13 11:12:35.123 [Z4006] sending list of active checks to [192.168.38.30] succeeded7.2 检查Agent日志# 查看Agent日志确认与Proxy连接正常 [rootshanghai-server1 ~]# tail -f /var/log/zabbix/zabbix_agent2.log # 正常日志示例 # 2023-05-13 11:12:34.567 [Z3001] connection to database zabbix succeeded # 2023-05-13 11:12:35.123 [Z4006] sending list of active checks to [192.168.38.129] succeeded7.3 常见问题排查问题排查方法Proxy无法连接Server检查防火墙是否开放10051端口网络是否互通Agent无法连接Proxy检查防火墙是否开放10050端口Agent配置是否正确数据未上报检查Proxy数据库连接是否正常查看日志错误信息主机状态不可用检查Proxy与Agent的连通性确认主机配置正确防火墙配置参考# Zabbix Proxy上开放端口 [rootzabbix-proxy ~]# firewall-cmd --permanent --add-port10051/tcp [rootzabbix-proxy ~]# firewall-cmd --reload # 被监控服务器上开放端口 [rootshanghai-server1 ~]# firewall-cmd --permanent --add-port10050/tcp [rootshanghai-server1 ~]# firewall-cmd --reload八、Proxy模式对比8.1 主动模式 vs 被动模式特性主动模式被动模式数据流向Proxy主动从Server获取配置推送数据Server主动连接Proxy拉取数据网络要求Proxy能访问Server即可Server需能访问Proxy适用场景Proxy在NAT后面Server无法直连Server可直接访问Proxy配置参数ProxyMode1ProxyMode0默认生产环境建议如果Proxy部署在NAT网络或防火墙后推荐使用主动模式。8.2 配置主动模式如需配置主动模式在zabbix_proxy.conf中添加ProxyMode1同时需要在Server端配置管理 → Proxy → 选择Proxy → 修改将Proxy模式改为主动式总结通过本文的实践我们成功完成了以下工作理解Proxy应用场景明确了Proxy在分布式监控中的定位和价值搭建Proxy环境完整部署了Zabbix Proxy及其数据库配置网络互通实现了跨网段监控数据的采集和转发Web界面配置完成了Proxy和主机的添加与验证关键要点回顾✅ Zabbix Proxy需独立数据库不能与Server共用✅ Agent配置的Server地址是Proxy地址而非Server地址✅ Web端添加主机时必须选择对应的Proxy✅ 主动模式更适合Proxy部署在NAT环境下的场景✅ Proxy数据库只做缓存数据发送后自动清理Zabbix Proxy是构建大规模、跨地域监控系统的重要组件合理利用可以极大提升监控系统的可扩展性和稳定性。希望本文能为您的分布式监控建设提供有价值的参考。参考资料Zabbix官方文档4 ProxyZabbix Proxy配置详解2 Zabbix proxy