ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ZABBIX分布式监控Proxy应用实践

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-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官方仓库 [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地址/DNS192.168.38.160(Proxy外网IP)
端口10051

6.2 添加被监控主机

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

  2. 填写主机信息:

参数填写内容
主机名称shanghai-server1
可见名称上海服务器-1
主机IP192.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=1ProxyMode=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是构建大规模、跨地域监控系统的重要组件,合理利用可以极大提升监控系统的可扩展性和稳定性。希望本文能为您的分布式监控建设提供有价值的参考。


参考资料

  • Zabbix官方文档:4 Proxy

  • Zabbix Proxy配置详解:2 Zabbix proxy

返回列表