一、规划与准备
1.1 准备一台部署主机
系统:任意 Linux(推荐 Ubuntu 20.04+/Debian 11+/Rocky 8+)。
资源:最低 2 vCPU / 4GB RAM / 50GB 磁盘(随监控规模增长再加)。
已安装:Docker Engine + Docker Compose v2。
时间同步:ntp 或 chrony,保证时钟正确,否则趋势图会异常。
1.2开放/规划端口
Web:80/443(给 Zabbix 前端)。
服务器:10051/TCP(Zabbix Server 对外)。
Agent:10050/TCP(各主机上 agent 暴露,Server 来拉)。
vCenter/ESXi:443/TCP(Zabbix Server 访问 vCenter/ESXi API)。
K8s 节点:如果用 Agent 主动模式也只需 Server 的 10051 可达。
1.3选择版本与时区
建议用 Zabbix 7.0 LTS 镜像系列(稳定、支持期长)。
时区按你的习惯(你之前环境多用 Asia/Shanghai;若在韩区可用 Asia/Seoul)。
二、用 Docker Compose 部署 Zabbix
2.1 目录与环境变量
[root@vmpzax102 zabbix]# cat ./.env
# 数据库
POSTGRES_USER=zabbix
POSTGRES_PASSWORD=zabbixDB
POSTGRES_DB=zabbix
# 时区(Web 与 Server 分别使用)
TZ=Asia/Shanghai
PHP_TZ=Asia/Shanghai
# Zabbix Server 基本调优(按规模可再改)
ZBX_TIMEOUT=30
ZBX_CACHESIZE=256M
ZBX_STARTVMWARECOLLECTORS=4
[root@vmpzax102 zabbix]# cat docker-compose.yml
version: "3.9"
services:
postgres:
image: postgres:15-alpine
container_name: zbx-postgres
restart: unless-stopped
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
TZ: ${TZ:-Asia/Shanghai}
volumes:
- ./postgres:/var/lib/postgresql/data:Z
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 10s
timeout: 5s
retries: 10
zabbix-server:
image: zabbix/zabbix-server-pgsql:alpine-7.0-latest
container_name: zbx-server
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
ports:
- "10051:10051"
environment:
DB_SERVER_HOST: postgres
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
TZ: ${TZ:-Asia/Shanghai}
# —— 关键:开启 VMware 采集器 ——
ZBX_STARTVMWARECOLLECTORS: "2" # 至少 1;根据规模可调大
ZBX_VMWAREFREQUENCY: "60" # vSphere 清单/任务采集频率(秒)
ZBX_VMWAREPERFFREQUENCY: "60" # 性能采样频率(秒)
# 常用调优(可按需调整)
ZBX_TIMEOUT: "30"
ZBX_CACHESIZE: "256M"
ZBX_SSLCALOCATION: /var/lib/zabbix/ssl/ssl_ca
volumes:
- ./alertscripts:/usr/lib/zabbix/alertscripts:Z
- ./externalscripts:/usr/lib/zabbix/externalscripts:Z
- ./enc:/var/lib/zabbix/enc:Z
- ./export:/var/lib/zabbix/export:Z
- ./modules:/var/lib/zabbix/modules:Z
- ./ssh_keys:/var/lib/zabbix/ssh_keys:Z
- ./snmptraps:/var/lib/zabbix/snmptraps:Z
- /var/zabbix/ssl/ssl_ca:/var/lib/zabbix/ssl/ssl_ca:ro
healthcheck:
test: ["CMD-SHELL", "pgrep zabbix_server >/dev/null || exit 1"]
interval: 10s
timeout: 5s
retries: 10
zabbix-web:
image: zabbix/zabbix-web-nginx-pgsql:alpine-7.0-latest
container_name: zbx-web
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
zabbix-server:
condition: service_started
ports:
- "80:8080"
- "443:8443"
environment:
DB_SERVER_HOST: postgres
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
ZBX_SERVER_HOST: zabbix-server
PHP_TZ: ${PHP_TZ:-Asia/Shanghai}
TZ: ${TZ:-Asia/Shanghai}
# 如需自有证书,取消下面注释并替换为你的证书:
# volumes:
# - ./tls/host.crt:/etc/ssl/nginx/host.crt:Z
# - ./tls/host.key:/etc/ssl/nginx/host.key:Z
# 可选:本机自监控 Agent2
zabbix-agent2:
image: zabbix/zabbix-agent2:alpine-7.0-latest
container_name: zbx-agent2
restart: unless-stopped
network_mode: host
environment:
ZBX_SERVER_HOST: "172.18.0.3,192.168.173.102" # 允许被动来源地址
ZBX_SERVER_ACTIVE: "192.168.173.102" # 主动上报目标(你的 Server 所在主机 IP)
ZBX_HOSTNAME: "vmpzax102"
TZ: ${TZ:-Asia/Shanghai}
volumes:
- /:/hostfs:ro,rslave
- /var/run:/var/run
- /sys:/sys
- /proc:/proc
- /dev:/dev
#启动
docker compose pull
docker compose up -d
docker compose ps
浏览器访问:
http://<部署主机IP>/(或 https://<ip>/)
默认账户:Admin / 密码:zabbix(首次登录请立刻修改)
三、给不同平台接入监控
建议统一 “主动(active)模式” + 自动注册,省心可靠(特别是跨网段、云上主机)。
3.1 Linux(CentOS/Ubuntu 等)安装 agent2
# 1) 安装 Zabbix 7.0 源
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/7/x86_64/zabbix-release-7.0-1.el7.noarch.rpm
yum clean all
# 2) 安装 agent2
yum install -y zabbix-agent2
# 3) 配置(/etc/zabbix/zabbix_agent2.conf)
# 关键项示例:
# Server=<Zabbix-Server-IP> # 被动模式需要;即允许谁来连 10050
# ServerActive=<Zabbix-Server-IP> # 主动模式 Server 地址(也可以写域名)
# HostnameItem=system.hostname
# HostMetadata=LINUX # 供自动注册规则识别
# TLSPSKIdentity/ TLSPSKFile(如需PSK加密)
# 4) 启动
systemctl enable --now zabbix-agent2
# 确认 10050 端口监听
ss -lntp | grep 10050
#Ubuntu/Debian 类似:安装 zabbix-release .deb 后 apt install zabbix-agent2。
3.2 Windows Server 安装 agent2
方法 1(图形化):下载 zabbix_agent2.msi(7.0 对应版本) → 双击安装
Server:填写 Zabbix Server IP
ServerActive:同上
Hostname:留空/默认(使用系统名)
HostMetadata:填 WINDOWS
方法 2(自动化,PowerShell):
$ver = "7.0.0" # 按实际版本
$msi = "zabbix_agent2-$ver-windows-amd64-openssl.msi"
$uri = "https://cdn.zabbix.com/zabbix/binaries/stable/7.0/$ver/$msi" # 示例
Invoke-WebRequest $uri -OutFile $msi
Start-Process msiexec.exe -Wait -ArgumentList @(
"/i", $msi,
"SERVER=<Zabbix-Server-IP>",
"SERVERACTIVE=<Zabbix-Server-IP>",
"HOSTMETADATA=WINDOWS",
"HOSTNAMEITEM=system.hostname",
"/qn"
)
Start-Service "Zabbix Agent 2"
Set-Service "Zabbix Agent 2" -StartupType Automatic
#Windows 防火墙若拦截 10050,放行即可;主动模式不要求外部能连 10050,但被动需要。
3.3 ESXi / vCenter 监控(通过 VMware API)
推荐对接 vCenter,一个入口监控所有 ESXi/VM:
评论 (0)