ZABBIX分布式监控Proxy应用实践

前言

在大型监控场景中,单一的Zabbix Server往往难以应对跨地域、大规模的监控需求。网络延迟、带宽限制、设备数量等因素都可能成为监控系统的瓶颈。本文将详细介绍Zabbix Proxy的部署与应用,通过实际案例演示如何构建分布式监控架构,实现跨地域数据中心的统一监控。


一、为什么需要Zabbix Proxy

1.1 什么是Zabbix Proxy

Zabbix 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 Server(192.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-server 192.168.38.30 AlmaLinux 9.1 Zabbix Server(北京)
zabbix-proxy 192.168.38.129 / 192.168.38.160 CentOS 7.9 Zabbix Proxy(上海中转)
shanghai-server1 192.168.38.130 CentOS 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官方仓库
[root@zabbix-proxy ~]# rpm -ivh https://repo.zabbix.com/zabbix/6.4/rhel/7/x86_64/zabbix-release-latest.el7.noarch.rpm

# 2. 安装Zabbix Proxy和Agent2
[root@zabbix-proxy ~]# yum install -y zabbix-proxy-mysql zabbix-sql-scripts zabbix-agent2

3.2 部署MySQL数据库

Zabbix Proxy需要独立的数据库存储缓存数据,这里采用二进制方式部署MySQL:

复制代码
# 下载并安装MySQL(以二进制方式为例)
[root@zabbix-proxy ~]# wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz
[root@zabbix-proxy ~]# tar -xvf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz -C /usr/local/
[root@zabbix-proxy ~]# mv /usr/local/mysql-8.0.33-linux-glibc2.12-x86_64 /usr/local/mysql

# 创建MySQL用户和数据目录
[root@zabbix-proxy ~]# useradd -r -s /sbin/nologin mysql
[root@zabbix-proxy ~]# mkdir -p /data/mysql
[root@zabbix-proxy ~]# chown -R mysql:mysql /data/mysql

# 初始化数据库
[root@zabbix-proxy ~]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/data/mysql

3.3 创建Proxy数据库

复制代码
# 登录MySQL
[root@zabbix-proxy ~]# /usr/local/mysql/bin/mysql -uroot -p
Enter password: 

# 创建数据库和用户
mysql> CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
mysql> CREATE USER 'zabbix'@'localhost' IDENTIFIED WITH mysql_native_password BY 'zabbix123';
mysql> GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
mysql> SET GLOBAL log_bin_trust_function_creators = 1;
mysql> FLUSH PRIVILEGES;
mysql> QUIT;

3.4 导入Proxy表结构

复制代码
[root@zabbix-proxy ~]# cd /usr/share/zabbix-sql-scripts/mysql/
[root@zabbix-proxy mysql]# cat proxy.sql | /usr/local/mysql/bin/mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
Enter password: zabbix123

3.5 配置Zabbix Proxy

编辑/etc/zabbix/zabbix_proxy.conf配置文件:

复制代码
# /etc/zabbix/zabbix_proxy.conf

# Zabbix Server地址(北京监控中心)
Server=192.168.38.30

# Proxy主机名(在Web界面添加时需要保持一致)
Hostname=shanghai-proxy

# 数据库连接配置
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix123

# 可选配置:数据发送频率(秒)
ProxyLocalBuffer=0
ProxyOfflineBuffer=1
HeartbeatFrequency=60
ConfigFrequency=3600
DataSenderFrequency=1

3.6 配置Zabbix Agent2(Proxy自身监控)

编辑/etc/zabbix/zabbix_agent2.conf

复制代码
# /etc/zabbix/zabbix_agent2.conf

# 被动模式Server地址
Server=192.168.38.30

# 主动模式Server地址
ServerActive=192.168.38.30

# 主机名
Hostname=192.168.38.160

注意:这里的Hostname建议使用Proxy的外网IP,方便在Zabbix Server端识别。


四、被监控服务器配置

4.1 安装Zabbix Agent2

在上海被监控服务器(192.168.38.130)上安装Agent2:

复制代码
[root@shanghai-server1 ~]# rpm -ivh https://repo.zabbix.com/zabbix/6.4/rhel/7/x86_64/zabbix-release-latest.el7.noarch.rpm
[root@shanghai-server1 ~]# yum install -y zabbix-agent2

4.2 配置Agent指向Proxy

编辑/etc/zabbix/zabbix_agent2.conf

复制代码
# /etc/zabbix/zabbix_agent2.conf

# 被动模式:指向Zabbix Proxy的内网IP
Server=192.168.38.129

# 主动模式:指向Zabbix Proxy的内网IP
ServerActive=192.168.38.129

# 主机名(唯一标识)
Hostname=192.168.38.130

关键点:Agent配置的Server地址必须是Zabbix Proxy的地址,而不是直接指向Zabbix Server。


五、启动服务

5.1 启动Zabbix Proxy

复制代码
# 设置开机自启
[root@zabbix-proxy ~]# systemctl enable zabbix-proxy
[root@zabbix-proxy ~]# systemctl enable zabbix-agent2

# 启动服务
[root@zabbix-proxy ~]# systemctl start zabbix-proxy
[root@zabbix-proxy ~]# systemctl start zabbix-agent2

# 检查服务状态
[root@zabbix-proxy ~]# systemctl status zabbix-proxy
[root@zabbix-proxy ~]# systemctl status zabbix-agent2

5.2 启动被监控服务器Agent

复制代码
[root@shanghai-server1 ~]# systemctl enable zabbix-agent2
[root@shanghai-server1 ~]# systemctl start zabbix-agent2
[root@shanghai-server1 ~]# systemctl status zabbix-agent2

六、Zabbix Web界面配置

6.1 添加Proxy代理

  1. 登录Zabbix Web界面

  2. 导航到 管理 → Proxy → 创建Proxy

配置参数如下:

参数 填写内容
Proxy名称 shanghai-proxy(必须与配置文件中的Hostname一致)
Proxy模式 主动式(推荐)或被动式
IP地址/DNS 192.168.38.160(Proxy外网IP)
端口 10051

6.2 添加被监控主机

  1. 导航到 配置 → 主机 → 创建主机

  2. 填写主机信息:

参数 填写内容
主机名称 shanghai-server1
可见名称 上海服务器-1
主机IP 192.168.38.130
主机组 选择"Shanghai Servers"或自定义组
监控代理 shanghai-proxy(必须选择刚创建的Proxy)
模板 选择"Linux by Zabbix agent"等模板

6.3 验证监控数据

配置完成后,等待几分钟(主动模式默认60秒刷新一次),检查:

  1. 主机状态是否变为"已启用"

  2. 最新数据中是否开始显示监控指标

  3. 可用性是否显示为绿色(ZBX)


七、验证与排障

7.1 检查Proxy日志

复制代码
# 查看Proxy日志,确认与Server连接正常
[root@zabbix-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] succeeded

7.2 检查Agent日志

复制代码
# 查看Agent日志,确认与Proxy连接正常
[root@shanghai-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] succeeded

7.3 常见问题排查

问题 排查方法
Proxy无法连接Server 检查防火墙是否开放10051端口,网络是否互通
Agent无法连接Proxy 检查防火墙是否开放10050端口,Agent配置是否正确
数据未上报 检查Proxy数据库连接是否正常,查看日志错误信息
主机状态不可用 检查Proxy与Agent的连通性,确认主机配置正确

防火墙配置参考

复制代码
# Zabbix Proxy上开放端口
[root@zabbix-proxy ~]# firewall-cmd --permanent --add-port=10051/tcp
[root@zabbix-proxy ~]# firewall-cmd --reload

# 被监控服务器上开放端口
[root@shanghai-server1 ~]# firewall-cmd --permanent --add-port=10050/tcp
[root@shanghai-server1 ~]# firewall-cmd --reload

八、Proxy模式对比

8.1 主动模式 vs 被动模式

特性 主动模式 被动模式
数据流向 Proxy主动从Server获取配置,推送数据 Server主动连接Proxy拉取数据
网络要求 Proxy能访问Server即可 Server需能访问Proxy
适用场景 Proxy在NAT后面,Server无法直连 Server可直接访问Proxy
配置参数 ProxyMode=1 ProxyMode=0(默认)

生产环境建议 :如果Proxy部署在NAT网络或防火墙后,推荐使用主动模式

8.2 配置主动模式

如需配置主动模式,在zabbix_proxy.conf中添加:

复制代码
ProxyMode=1

同时需要在Server端配置:

  • 管理 → Proxy → 选择Proxy → 修改

  • 将Proxy模式改为"主动式"


总结

通过本文的实践,我们成功完成了以下工作:

  1. 理解Proxy应用场景:明确了Proxy在分布式监控中的定位和价值

  2. 搭建Proxy环境:完整部署了Zabbix Proxy及其数据库

  3. 配置网络互通:实现了跨网段监控数据的采集和转发

  4. Web界面配置:完成了Proxy和主机的添加与验证

关键要点回顾

✅ Zabbix Proxy需独立数据库,不能与Server共用

✅ Agent配置的Server地址是Proxy地址,而非Server地址

✅ Web端添加主机时必须选择对应的Proxy

✅ 主动模式更适合Proxy部署在NAT环境下的场景

✅ Proxy数据库只做缓存,数据发送后自动清理

Zabbix Proxy是构建大规模、跨地域监控系统的重要组件,合理利用可以极大提升监控系统的可扩展性和稳定性。希望本文能为您的分布式监控建设提供有价值的参考。


参考资料

相关推荐
ACP广源盛139246256735 小时前
WAIC2026 国产算力浪潮@ACP#YLB3118 在算力矩阵中的存储定位与落地场景
大数据·人工智能·分布式·单片机·嵌入式硬件
liudashuang20178 小时前
Kafka Producer 隐藏深坑:Sender 线程自阻塞(自死锁)导致 BufferExhaustedException 完整复盘
java·分布式·kafka·linq
rustfs9 小时前
GitLab 如何与 RustFS 集成?
分布式·rust·gitlab
Francek Chen10 小时前
【大数据处理与分析】数据仓库Hive:02 数据湖
大数据·数据仓库·hive·hadoop·分布式·数据分析
starzy199011 小时前
Spark 核心之二次排序、分组取 TopN 优化分析
大数据·分布式·spark
悦数图数据库11 小时前
千亿点边图谱建设,原生分布式图数据库如何避免单点瓶颈
数据库·分布式
祈禾20 小时前
Redis三大缓存问题与分布式锁
运维·数据库·redis·笔记·分布式·缓存
叠层归一研究院21 小时前
AGI 系统(五):多主体 AGI 网络 — 分布式符号边界上的时序差同构传播
分布式·php·agi
Freed&1 天前
Zabbix TCP连接状态自定义监控完整部署手册
网络·tcp/ip·zabbix