Zabbix 6.0 LTS 配置 Proxy 分布式监控详解
一、Zabbix Proxy 概述
Zabbix Proxy 是一个数据收集代理,用于在分布式监控环境中收集监控数据并将其转发给 Zabbix Server。主要应用于:
- 远程监控多个分支机构
- 减少 Zabbix Server 的网络负载
- 在网络不稳定时保持监控数据
- 监控不可直接访问的网络区域
二、环境准备
1. 系统要求
- Zabbix Server:已部署并运行正常
- 目标机器:用于安装 Zabbix Proxy
- 网络:Proxy 能访问 Server,被监控设备能访问 Proxy
2. 网络架构示例
Zabbix Server (192.168.1.10)
↑
Zabbix Proxy (192.168.2.10)
↑
被监控设备 (192.168.2.11-50)
三、安装 Zabbix Proxy
1. 安装方式选择
根据系统选择安装方式:
CentOS/RHEL 8/9:
# 安装仓库
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
dnf clean all
# 安装 proxy(根据数据库选择)
# MySQL
dnf install zabbix-proxy-mysql
# PostgreSQL
dnf install zabbix-proxy-pgsql
# SQLite3
dnf install zabbix-proxy-sqlite3
Ubuntu 22.04:
# 安装仓库
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4%2Bubuntu22.04_all.deb
dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb
apt update
# 安装 proxy
# MySQL
apt install zabbix-proxy-mysql
# PostgreSQL
apt install zabbix-proxy-pgsql
# SQLite3
apt install zabbix-proxy-sqlite3
四、数据库配置
1. MySQL 配置示例
# 创建数据库
mysql -uroot -p
CREATE DATABASE zabbix_proxy CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix_proxy'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON zabbix_proxy.* TO 'zabbix_proxy'@'localhost';
FLUSH PRIVILEGES;
EXIT;
# 导入初始 schema
zcat /usr/share/doc/zabbix-proxy-mysql*/schema.sql.gz | mysql -uzabbix_proxy -p zabbix_proxy
2. PostgreSQL 配置示例
# 创建数据库和用户
sudo -u postgres psql
CREATE USER zabbix_proxy WITH PASSWORD 'your_password';
CREATE DATABASE zabbix_proxy WITH OWNER zabbix_proxy ENCODING 'UTF8';
\q
# 导入初始 schema
zcat /usr/share/doc/zabbix-proxy-pgsql*/schema.sql.gz | sudo -u zabbix_proxy psql zabbix_proxy
五、配置 Zabbix Proxy
1. 主配置文件 /etc/zabbix/zabbix_proxy.conf
# 基础配置
Server=192.168.1.10 # Zabbix Server IP地址
ServerPort=10051 # Zabbix Server端口
Hostname=proxy-branch-office # 代理名称,必须唯一
# 数据库配置(MySQL示例)
DBHost=localhost
DBName=zabbix_proxy
DBUser=zabbix_proxy
DBPassword=your_password
# 高级配置
ProxyMode=0 # 0-主动模式,1-被动模式
ConfigFrequency=3600 # 配置同步间隔(秒)
DataSenderFrequency=1 # 数据发送间隔(秒)
StartPollers=5 # 启动的轮询器数量
StartPollersUnreachable=1 # 不可达设备轮询器
StartTrappers=5 # trapper进程数
StartPingers=1 # ICMP ping进程数
StartDiscoverers=1 # 网络发现进程数
HistoryCacheSize=16M # 历史数据缓存大小
HistoryIndexCacheSize=4M # 历史索引缓存大小
Timeout=3 # 超时时间
TLSCONNECT=unencrypted # 连接加密方式
TLSACCEPT=unencrypted
TLSPSKIdentity= # TLS PSK标识
TLSPSKFile= # TLS PSK文件
2. 配置说明
主动模式 vs 被动模式:
- 主动模式 (ProxyMode=0):Proxy 主动连接 Server 获取配置和发送数据
- 被动模式 (ProxyMode=1):Server 主动连接 Proxy
推荐配置调整:
# 根据监控数量调整
StartPollers=50 # 每100个监控项增加5-10个
StartTrappers=10 # 如果使用 trapper 监控
MaxHousekeeperDelete=5000 # 清理历史数据速度
# 性能优化
CacheSize=32M # 缓存大小
StartPreprocessors=3 # 预处理进程
StartLLDProcessors=2 # 低级别发现进程
StartHistoryPollers=2 # 历史数据轮询
六、Zabbix Server 配置
1. Web界面配置 Proxy
登录 Zabbix Web →
管理 →
代理程序
创建代理- 代理名称:与 proxy.conf 中的 Hostname 一致
- 代理模式:主动式
- 代理地址:可选,用于被动模式
- 加密:选择连接加密方式
2. 主机配置使用 Proxy
配置 →
主机 → 选择主机
代理:选择创建的代理
保存
七、启动和验证
1. 启动服务
# 启动服务
systemctl start zabbix-proxy
# 设置开机自启
systemctl enable zabbix-proxy
# 查看状态
systemctl status zabbix-proxy
# 查看日志
tail -f /var/log/zabbix/zabbix_proxy.log
2. 验证连接
日志中应有类似输出:
12345:20240101:120000.001 proxy "proxy-branch-office" started [active proxy]
12345:20240101:120000.002 sending configuration data to server at "192.168.1.10:10051"
3. Web界面验证
进入
监控 →
代理程序
查看代理状态应为
在线
检查
最后看到 时间是否更新
八、高级配置
1. 配置加密通信(TLS PSK)
生成 PSK:
# 生成 PSK 密钥
openssl rand -hex 32 > /etc/zabbix/zabbix_proxy.psk
chown zabbix:zabbix /etc/zabbix/zabbix_proxy.psk
chmod 600 /etc/zabbix/zabbix_proxy.psk
# 查看 PSK 值
cat /etc/zabbix/zabbix_proxy.psk
Proxy 配置:
TLSConnect=psk
TLSAccept=psk
TLSPSKIdentity=proxy_identity
TLSPSKFile=/etc/zabbix/zabbix_proxy.psk
Server Web 配置:
- 代理编辑 → 加密 → PSK
- PSK 身份:proxy_identity
- PSK:粘贴 PSK 值
2. 多 Proxy 负载均衡
# 在多个 Proxy 间分配主机
# Proxy 1 配置
Hostname=proxy-1
# Proxy 2 配置
Hostname=proxy-2
# 在 Web 界面将不同主机分配给不同 Proxy
3. 监控 Proxy 自身
# 在 Proxy 服务器上安装 agent2
dnf install zabbix-agent2
# 配置 agent2 指向本地 Proxy
cat > /etc/zabbix/zabbix_agent2.conf << EOF
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=proxy-branch-office
EOF
systemctl start zabbix-agent2
九、故障排除
常见问题及解决
代理状态显示离线
# 检查网络连接
telnet 192.168.1.10 10051
# 检查防火墙
firewall-cmd --list-all
# 查看 Proxy 日志
tail -f /var/log/zabbix/zabbix_proxy.log
# 检查配置是否一致
grep "Hostname" /etc/zabbix/zabbix_proxy.conf
数据不同步
# 检查数据库连接
mysql -uzabbix_proxy -p -e "SELECT 1"
# 增加日志级别
DebugLevel=4
systemctl restart zabbix-proxy
性能问题
# 监控 Proxy 内部统计
zabbix_proxy -R config_cache_reload
# 检查数据库性能
show processlist;
监控指标检查表
| 指标 |
正常范围 |
检查方法 |
|---|
| 数据发送队列 |
< 100 |
Web界面:代理 → 队列 |
| 缓存使用率 |
< 80% |
内部检查项:zabbix[proxy,cache,buffer,pfree] |
| 轮询器空闲 |
> 20% |
内部检查项:zabbix[process,poller,avg,busy] |
| 数据库连接 |
正常 |
日志无连接错误 |
十、维护和优化
定期维护任务
# 清理旧数据
mysql -uzabbix_proxy -p zabbix_proxy -e "DELETE FROM history WHERE clock < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY))"
# 优化数据库表
mysqlcheck -uzabbix_proxy -p --optimize zabbix_proxy
# 备份配置
tar -czf /backup/zabbix_proxy_backup_$(date +%Y%m%d).tar.gz /etc/zabbix/
性能调优建议
根据监控数量调整进程数
- 每100个监控项:增加2-3个轮询器
- 每50个触发器:增加1个 trapper
数据库优化
-- 创建索引优化
CREATE INDEX history_1 ON history (itemid, clock);
CREATE INDEX trends_1 ON trends (itemid, clock);
缓存配置
# 大内存环境建议
CacheSize=128M
HistoryCacheSize=64M
HistoryIndexCacheSize=16M
总结
Zabbix Proxy 配置完成后,应该:
✓ Proxy 服务正常运行
✓ Web界面显示在线状态
✓ 主机监控数据正常接收
✓ 配置定期同步正常
✓ 性能指标在正常范围
通过以上步骤,可以成功部署 Zabbix Proxy 实现分布式监控。建议在生产环境部署前,先在测试环境验证配置,确保所有功能正常工作。