Zabbix Proxy 是一个数据收集代理,用于在分布式监控环境中收集监控数据并将其转发给 Zabbix Server。主要应用于:
Zabbix Server (192.168.1.10)
↑
Zabbix Proxy (192.168.2.10)
↑
被监控设备 (192.168.2.11-50)
根据系统选择安装方式:
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
# 创建数据库
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
# 创建数据库和用户
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
/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文件
主动模式 vs 被动模式:
推荐配置调整:
# 根据监控数量调整
StartPollers=50 # 每100个监控项增加5-10个
StartTrappers=10 # 如果使用 trapper 监控
MaxHousekeeperDelete=5000 # 清理历史数据速度
# 性能优化
CacheSize=32M # 缓存大小
StartPreprocessors=3 # 预处理进程
StartLLDProcessors=2 # 低级别发现进程
StartHistoryPollers=2 # 历史数据轮询
# 启动服务
systemctl start zabbix-proxy
# 设置开机自启
systemctl enable zabbix-proxy
# 查看状态
systemctl status zabbix-proxy
# 查看日志
tail -f /var/log/zabbix/zabbix_proxy.log
日志中应有类似输出:
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"
生成 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 配置:
# 在多个 Proxy 间分配主机
# Proxy 1 配置
Hostname=proxy-1
# Proxy 2 配置
Hostname=proxy-2
# 在 Web 界面将不同主机分配给不同 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/
根据监控数量调整进程数
数据库优化
-- 创建索引优化
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 实现分布式监控。建议在生产环境部署前,先在测试环境验证配置,确保所有功能正常工作。