Zabbix 分布式监控告警系统搭建

Zabbix 是一款企业级开源监控解决方案,可以监控网络、服务器、虚拟机和云服务的各项参数。它支持代理模式的分布式监控,内置丰富的告警机制和可视化功能。本文将在搬瓦工 VPS 上使用 Docker 方式搭建 Zabbix 监控系统。

一、环境要求

  • 操作系统:Ubuntu 20.04+ 或 Debian 11+。
  • 内存:Zabbix Server 推荐 2GB 以上。
  • 磁盘:数据库需要较大存储空间,建议 20GB 以上。
  • 前置条件:已安装 Docker

二、Docker Compose 部署

创建 /opt/zabbix/docker-compose.yml

mkdir -p /opt/zabbix
cat > /opt/zabbix/docker-compose.yml <<'EOF'
version: '3.8'

services:
  mysql-server:
    image: mysql:8.0
    container_name: zabbix-mysql
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix_password
      MYSQL_ROOT_PASSWORD: root_password
    command:
      - mysqld
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_bin
      - --default-authentication-plugin=mysql_native_password
    volumes:
      - zabbix-mysql-data:/var/lib/mysql

  zabbix-server:
    image: zabbix/zabbix-server-mysql:ubuntu-7.0-latest
    container_name: zabbix-server
    restart: unless-stopped
    depends_on:
      - mysql-server
    environment:
      DB_SERVER_HOST: mysql-server
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix_password
      MYSQL_ROOT_PASSWORD: root_password
      ZBX_CACHESIZE: 128M
      ZBX_HISTORYCACHESIZE: 64M
    ports:
      - "10051:10051"
    volumes:
      - zabbix-server-alertscripts:/usr/lib/zabbix/alertscripts
      - zabbix-server-externalscripts:/usr/lib/zabbix/externalscripts

  zabbix-web:
    image: zabbix/zabbix-web-nginx-mysql:ubuntu-7.0-latest
    container_name: zabbix-web
    restart: unless-stopped
    depends_on:
      - zabbix-server
      - mysql-server
    environment:
      ZBX_SERVER_HOST: zabbix-server
      DB_SERVER_HOST: mysql-server
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix_password
      PHP_TZ: Asia/Shanghai
    ports:
      - "8080:8080"

  zabbix-agent:
    image: zabbix/zabbix-agent2:ubuntu-7.0-latest
    container_name: zabbix-agent
    restart: unless-stopped
    depends_on:
      - zabbix-server
    environment:
      ZBX_SERVER_HOST: zabbix-server
      ZBX_HOSTNAME: "Zabbix server"
    privileged: true
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro

volumes:
  zabbix-mysql-data:
  zabbix-server-alertscripts:
  zabbix-server-externalscripts:
EOF

cd /opt/zabbix
docker compose up -d

三、初始登录

等待约 1-2 分钟数据库初始化完成后,访问 http://你的IP:8080

  • 默认用户名:Admin
  • 默认密码:zabbix

首次登录后务必修改管理员密码。进入「User settings」→「Password」修改。

四、添加监控主机

4.1 本机监控

Docker Compose 中已包含 Zabbix Agent,默认已注册主机「Zabbix server」。在 Web 界面中进入「Monitoring」→「Hosts」查看状态,确认 Agent 图标变为绿色表示连接正常。

4.2 远程主机安装 Agent

在需要监控的远程搬瓦工 VPS 上安装 Zabbix Agent:

# Ubuntu/Debian
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest+ubuntu22.04_all.deb
dpkg -i zabbix-release_latest+ubuntu22.04_all.deb
apt update
apt install zabbix-agent2 -y

4.3 配置 Agent

cat > /etc/zabbix/zabbix_agent2.conf <<EOF
Server=YOUR_ZABBIX_SERVER_IP
ServerActive=YOUR_ZABBIX_SERVER_IP
Hostname=bwg-vps-02
LogFile=/var/log/zabbix/zabbix_agent2.log
EOF

systemctl restart zabbix-agent2
systemctl enable zabbix-agent2

4.4 在 Web 界面添加主机

进入「Data collection」→「Hosts」→「Create host」:

  • Host name:与 Agent 配置中的 Hostname 一致。
  • Templates:选择「Linux by Zabbix agent」模板。
  • Host groups:选择「Linux servers」。
  • Interfaces:添加 Agent 接口,填入远程服务器 IP 和端口 10050。

五、配置告警

5.1 邮件告警

进入「Alerts」→「Media types」,找到「Email」并配置:

  • SMTP server:你的 SMTP 服务器地址。
  • SMTP server port:587。
  • SMTP email:发件人邮箱。
  • Authentication:填入用户名和密码。

然后在「Users」→「Admin」→「Media」中添加邮件接收地址。

5.2 创建告警动作

进入「Alerts」→「Actions」→「Trigger actions」→「Create action」:

  • Name:设置动作名称,如「发送告警邮件」。
  • Conditions:添加触发条件,例如触发器严重程度 >= Warning。
  • Operations:添加操作,选择「Send message」,发送给 Admin 用户组。

六、自定义监控项

6.1 创建自定义监控项

在主机页面点击「Items」→「Create item」,可以添加自定义的监控指标。例如监控 Nginx 连接数:

# 在被监控主机的 Agent 配置中添加
UserParameter=nginx.active,curl -s http://localhost/nginx_status | grep Active | awk '{print $NF}'

6.2 创建自定义触发器

在主机页面点击「Triggers」→「Create trigger」:

  • Expressionlast(/hostname/system.cpu.util) > 80
  • Severity:选择 Warning 或 High。

七、仪表板与图表

Zabbix 内置了丰富的可视化功能:

  • Dashboard:进入「Monitoring」→「Dashboard」创建自定义仪表板,添加各种小部件(图表、地图、问题列表等)。
  • Graphs:在主机页面查看自动生成的性能图表。
  • Maps:创建网络拓扑图,直观展示各主机之间的关系。

八、防火墙配置

# Zabbix Server 端口
ufw allow 10051/tcp

# Zabbix Agent 端口(被监控主机)
ufw allow 10050/tcp

# Web 界面端口
ufw allow 8080/tcp

九、数据维护

# 查看数据库大小
docker exec zabbix-mysql mysql -u zabbix -pzabbix_password -e "SELECT table_schema, ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 'Size (MB)' FROM information_schema.tables WHERE table_schema = 'zabbix' GROUP BY table_schema;"

# Zabbix 内置了 Housekeeper 自动清理历史数据
# 在 Web 界面 Administration → General → Housekeeping 中配置保留策略

十、常见问题

Web 界面打不开

# 检查容器状态
docker compose ps
docker compose logs zabbix-web

Agent 无法连接

确认 Server 和 Agent 之间的 10050/10051 端口是否畅通,以及 Agent 配置中的 Server 地址是否正确。

总结

Zabbix 是功能最全面的开源监控系统之一,适合需要监控多台服务器的场景。对于只需要监控单台 VPS 的用户,可以考虑更轻量的 NetdataUptime Kuma。选购搬瓦工 VPS 请参考 全部方案,使用优惠码 NODESEEK2026 可享受 6.77% 的循环折扣。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。