用 Docker Compose 部署 Zabbix 监控非常标准且模块化。针对现有的单台云主机(内存有限)环境,推荐使用 Zabbix 6.0 LTS / 7.0 LTS + 极轻量的 SQLite3 引擎 或者 复用已有 MySQL 8.0。

考虑到小规格服务器的内存压力,最轻量、最不抢资源的方式是采用 SQLite3 作为 Zabbix Server 底层(不需要再单独跑一个吃几百兆内存的专用 MySQL 实例)。

一、 目录规划与准备工作

先规划好独立的运行目录:

Bash

mkdir -p /opt/zabbix
cd /opt/zabbix

确保之前的自定义共享网络 web-net 存在(已创建过可直接复用):

Bash

docker network ls | grep web-net

二、 编写 Docker Compose 文件

创建并编辑 /opt/zabbix/docker-compose.yml:

Bash

vim /opt/zabbix/docker-compose.yml

写入以下配置(采用官方轻量级 SQLite3 方案,自带 Server + Nginx Web 前端 + 采集客户端 Agent):

YAML

version: '3.8'

services:
  zabbix-server:
    image: zabbix/zabbix-server-sqlite3:ubuntu-6.0-latest
    container_name: zabbix-server
    restart: unless-stopped
    ports:
      - "10051:10051"       # Zabbix Server 接收 Agent 数据的主端口
    volumes:
      - ./zbx_env/var/lib/zabbix:/var/lib/zabbix
      - ./zbx_env/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts
      - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts
    networks:
      - default

  zabbix-web:
    image: zabbix/zabbix-web-nginx-sqlite3:ubuntu-6.0-latest
    container_name: zabbix-web
    restart: unless-stopped
    ports:
      - "8088:8080"         # 映射到宿主机的 8088 端口访问 Web 界面
    environment:
      - ZBX_SERVER_HOST=zabbix-server
      - PHP_TZ=Asia/Shanghai
    depends_on:
      - zabbix-server
    volumes:
      - ./zbx_env/var/lib/zabbix:/var/lib/zabbix
    networks:
      - default

  zabbix-agent:
    image: zabbix/zabbix-agent:ubuntu-6.0-latest
    container_name: zabbix-agent
    restart: unless-stopped
    privileged: true        # 提权以采集宿主机底层真实硬件指标
    pid: host               # 共享主机 PID 命名空间,监控宿主机真实进程
    ports:
      - "10050:10050"
    environment:
      - ZBX_HOSTNAME=Zabbix server
      - ZBX_SERVER_HOST=zabbix-server
    volumes:
      - /:/host/root:ro     # 挂载宿主机根目录(只读),采集磁盘状态
      - /var/run:/var/run:rw
      - /proc:/host/proc:ro # 采集宿主机真实 CPU/内存指标
      - /sys:/host/sys:ro
    networks:
      - default

networks:
  default:
    name: web-net
    external: true

三、 启动与初始化

  1. 拉取并后台启动:

    Bash

    cd /opt/zabbix
    docker compose up -d
    
  2. 检查容器运行状态:

    Bash

    docker compose ps
    

    确认 zabbix-server、zabbix-web、zabbix-agent 三个容器均为 Up 状态。

四、 访问 Web 控制台与默认账号

  1. 临时直连访问(需在阿里云安全组放行 8088 端口): 在浏览器直接打开:

    Plaintext

    http://你的服务器IP:8088
    
  2. 默认管理员登录凭证:

    • Username:Admin(注意首字母大写)

    • Password:zabbix

  3. 中文界面设置: 登录后点击左下角的 User settings(用户设置) -> User 选项卡 -> Language 改为 Chinese (zh_CN),点击 Update 即可切换为全中文界面。

五、 接入 NPM 反代与监控博客

  1. 通过 NPM 绑定域名(推荐):

    • 在你的域名解析里加一条二级域名(例如 zabbix.originspace.work 解析到 ECS 公网 IP)。

    • 在 NPM 面板添加一条 Proxy Host:

      • Forward Hostname / IP:填 zabbix-web

      • Forward Port:8080

      • 申请 Let's Encrypt 证书并强制开启 HTTPS。

  2. 监控博客连通性(Web 场景监控):

    • 进入 Zabbix 网页端:配置 (Configuration) -> 主机 (Hosts)。

    • 点击已有主机或新建主机,进入 Web 场景 (Web scenarios)。

    • 点击 创建 Web 场景:

      • 名称填 Halo-Blog-Check。

      • 在 步骤 (Steps) 里添加:URL 填 [https://originspace.work](https://originspace.work),要求的状态码填 200。

    • 这样一旦博客容器异常、宕机或报 502/504,Zabbix 仪表盘会立刻触发报警。