部署zabbix

axing
2025-09-10 / 0 评论 / 1 阅读 / 正在检测是否收录...

一、规划与准备
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:

mfdszelb.png
mfdszqpi.png

0

评论 (0)

取消