概述

Zabbix 支持两种主要的工作模式:被动模式(Passive)主动模式(Active)。这两种模式是站在 Zabbix Agent 角度来说的工作模式。


被动模式

工作原理

在被动模式下,Zabbix Agent 被动接受 Zabbix Server 周期性发送过来的数据收集指令:

  1. Zabbix Server 根据主机关联的模板中的监控项和数据采集间隔时间,周期性打开随机端口
  2. 向 Zabbix Agent 服务器的 10050 端口发起 TCP 连接
  3. 发送获取监控项数据的指令
  4. Zabbix Agent 接收到指令后采集数据并返回

特点

  • Zabbix Server 发送什么指令,Zabbix Agent 就收集什么数据
  • Zabbix Server 什么时候发送,Zabbix Agent 就什么时候采集
  • Zabbix Server 不发送,Zabbix Agent 就一直不响应

被动模式的优点

  • ✅ 配置简单,安装后即可使用
  • ✅ Zabbix 的默认工作模式
  • ✅ 无需额外配置

被动模式的缺点

  • ❌ 会加大 Zabbix Server 的工作量
  • ❌ 在数百甚至数千台服务器的环境下,Zabbix Server 需要轮询向每个 Agent 发送数据采集指令
  • ❌ Zabbix Server 负载高时可能导致不能及时获取最新数据

被动模式端口状态

Zabbix Server (随机端口)  →  Zabbix Agent:10050

Server 端会产生大量随机端口连接。

被动模式配置

Zabbix Agent 默认即为被动模式,只需配置 Server 参数:

# /etc/zabbix/zabbix_agent2.conf
Server=192.168.5.3

主动模式

工作原理

在主动模式下,Zabbix Agent 主动向 Zabbix Server 的 10051 端口发起 TCP 连接请求:

  1. Zabbix Agent 主动连接到 Zabbix Server
  2. 获取自己的监控项和数据采集间隔周期时间
  3. 根据监控项主动采集数据
  4. 将数据返回给 Zabbix Server

特点

  • 必须配置 ServerActive 指定 Zabbix Server 的 IP 或主机名
  • Agent 主动获取监控项列表并定期上报数据
  • 不再需要 Server 向 Agent 发起连接请求

主动模式的优点

  • ✅ 减轻 Zabbix Server 打开的本地随机端口和进程数
  • ✅ 在一定程度上减轻 Zabbix Server 的压力
  • ✅ 适合大规模监控环境
  • ✅ 支持 NAT/防火墙后的主机监控

主动模式的缺点

  • ❌ 配置相对复杂
  • ❌ Zabbix 6.0 及以下版本主动模式主机可用性显示灰色(Zabbix 6.2+ 已修复)
  • ❌ 某些监控项不支持主动模式

主动模式配置

编辑 /etc/zabbix/zabbix_agent2.conf

PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=192.168.5.3
ServerActive=192.168.5.3
Hostname=192.168.5.134
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
Include=./zabbix_agent2.d/plugins.d/*.conf

关键配置项

配置项说明
Server被动模式服务端地址(建议同时配置,用于远程命令等)
ServerActive主动模式服务端地址
Hostname本机标识,必须与 Zabbix Server 配置的主机名一致

版本注意事项

重要:Zabbix 6.0 及以下版本使用主动模式时,主机可用性可能一直显示为灰色。建议升级到 Zabbix 6.2 或更高版本

模式对比

特性被动模式主动模式
连接方向Server → AgentAgent → Server
Server 端口随机端口10051
Agent 端口10050随机端口
配置复杂度简单较复杂
Server 负载
适用规模中小规模大规模
NAT/防火墙支持受限良好
监控项支持全部部分不支持

Zabbix Proxy

架构图

Zabbix Agent → Zabbix Proxy → Zabbix Server
                    ↓
               Proxy Database

Zabbix Proxy vs Zabbix Server

功能Zabbix ProxyZabbix Server
轻量级✅ 是相对重量级
图形界面❌ 无✅ 带图形控制界面
独立工作✅ 可以独立采集数据并存储✅ 数据采集、存储、分析、展示于一体
易维护✅ 设置完成后基本无需管理维护也不难
独立数据库保留少量最近数据保留指定时间内的所有数据
报警通知❌ 不发送邮件通知✅ 支持邮件、短信等告警机制

版本要求

重要:Zabbix Proxy 的大版本必须和 Zabbix Server 版本一致,否则会导致兼容性问题。

安装方式

方式一:YUM 安装

# 安装依赖
yum -y install OpenIPMI-libs fping libevent net-snmp-libs unixODBC pcre2

# 安装 Zabbix Proxy
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-proxy-mysql-6.0.38-release2.el7.x86_64.rpm

方式二:编译安装

# 创建用户
useradd zabbix -s /usr/sbin/nologin

# 编译配置
cd /usr/local/src/zabbix-6.0.x
./configure --prefix=/usr/sbin/zabbix_proxy \
    --enable-proxy --enable-agent \
    --with-mysql --with-net-snmp \
    --with-libcurl --with-libxml2

make install

创建 Systemd 服务文件

cat > /lib/systemd/system/zabbix-proxy.service << 'EOF'
[Unit]
Description=Zabbix Proxy
After=syslog.target network.target mysqld.service

[Service]
Environment="CONFFILE=/etc/zabbix/zabbix_proxy.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-proxy
Type=forking
Restart=on-failure
PIDFile=/run/zabbix/zabbix_proxy.pid
KillMode=control-group
ExecStart=/usr/sbin/zabbix_proxy -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s

[Install]
WantedBy=multi-user.target
EOF

部署数据库

# 创建数据库(主动模式)
create database zabbix_proxy_active character set utf8 collate utf8_bin;

# 创建数据库(被动模式)
create database zabbix_proxy_passive character set utf8 collate utf8_bin;

# 创建用户
grant all on zabbix_proxy_active.* to 'proxy'@'%' identified by 'zzjjhh123';

导入数据库

# 主动模式数据库导入
zcat /usr/share/doc/zabbix-proxy-mysql/schema.sql.gz | \
    mysql -uproxy -p123456 -h172.31.0.104 zabbix_proxy_active

Proxy 配置文件

被动模式配置

# /etc/zabbix/zabbix_proxy.conf

# 0为主动,1为被动
ProxyMode=1

# Zabbix Server 服务器的地址或主机名
Server=172.31.0.101

# 代理服务器名称,需要与 Zabbix Server 添加代理时的 proxy name 一致
Hostname=magedu-jiege-proxy-passive

# Zabbix Proxy 监听端口
ListenPort=10051

LogFile=/var/log/zabbix/zabbix_proxy.log

# 允许 Zabbix Server 执行远程命令
EnableRemoteCommands=1

# 数据库配置
DBHost=172.31.0.104
DBName=zabbix_proxy_passive
DBUser=proxy
DBPassword=123456
DBPort=3306

# 数据保留时间(小时)
ProxyLocalBuffer=720
ProxyOfflineBuffer=720

# 心跳检测间隔(秒)
HeartBeatFrequency=60

# 从 Zabbix Server 获取监控项信息的间隔(秒)
ConfigFrequency=5

# 数据发送的时间间隔(秒)
DataSenderFrequency=5

# 启动的数据采集器数量
StartPollers=20
StartPingers=3

# Java Gateway 配置(如需监控 Java)
JavaGateway=172.31.0.104
JavaGatewayPort=10052
StartJavaPollers=20

# 缓存配置
CacheSize=2G
HistoryCacheSize=2G
HistoryIndexCacheSize=128M

# 超时设置
Timeout=30
LogSlowQueries=3000

主动模式配置

# 0为主动,1为被动
ProxyMode=0

# 其他配置与被动模式类似
Server=172.31.0.101
ServerPort=10051
Hostname=magedu-jiege-proxy-active
...

启动 Proxy

systemctl enable zabbix-proxy
systemctl start zabbix-proxy
systemctl status zabbix-proxy

选择建议

场景推荐模式
监控主机 < 100 台被动模式
监控主机 > 500 台主动模式
跨地域/跨机房监控主动模式 + Proxy
NAT/防火墙后主机主动模式
高安全要求环境主动模式
快速部署测试被动模式

最后修改:2026 年 04 月 14 日
如果觉得我的文章对你有用,请随意赞赏