使用Docker快速部署Zabbix监控系统指南

1. 环境准备与要求

1.1系统要求

  • 推荐 2GB 以上内存
  • 20GB 以上磁盘空间
  • 互联网连接(用于拉取 Docker 镜像)
  • 操作系统:Linux(推荐 Ubuntu 20.04+/CentOS 7+)、Windows 10+(带 WSL2)或 macOS

2. 配置系统基础阿里源

1.1 替换系统默认源

# 备份原有源配置
sudo mkdir -p /etc/yum.repos.d/backup
sudo mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/

# 下载阿里的CentOS 8源(使用CentOS Stream兼容版本)
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

# 下载阿里的EPEL源
sudo curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-archive-8.repo

# 替换EPEL源中的地址为阿里源
sudo sed -i 's|^metalink=|#metalink=|g' /etc/yum.repos.d/epel.repo
sudo sed -i 's|^#baseurl=https://download.fedoraproject.org/pub/epel/|baseurl=https://mirrors.aliyun.com/epel/|g' /etc/yum.repos.d/epel.repo

# 清除缓存并生成新缓存
sudo dnf clean all
sudo dnf makecache

2. 使用阿里源安装 Docker

2.1 添加阿里 Docker源

# 安装依赖
sudo dnf install -y yum-utils device-mapper-persistent-data lvm2

# 添加阿里Docker CE源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 清除并生成缓存
sudo dnf clean all
sudo dnf makecache

2.2 安装 Docker

# 安装Docker组件
sudo dnf install -y docker-ce docker-ce-cli containerd.io

# 启动Docker并设置开机自启
sudo systemctl enable --now docker

# 将当前用户添加到docker组
sudo usermod -aG docker $USER

# 验证安装
docker --version

2.3 配置阿里 Docker 镜像加速

# 创建Docker配置目录
sudo mkdir -p /etc/docker

# 配置阿里镜像加速器
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://registry.cn-hangzhou.aliyuncs.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com"
  ]
}
EOF

# 重启Docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker

3. 安装 Docker Compose(使用阿里源)

# 从阿里镜像源下载Docker Compose
sudo curl -L "https://mirrors.aliyun.com/docker-toolbox/linux/compose/2.17.2/docker-compose-Linux-x86_64" -o /usr/local/bin/docker-compose

# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 创建软链接
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# 验证安装
docker-compose --version

4. 防火墙配置

sudo systemctl enable --now firewalld
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=10051/tcp
sudo firewall-cmd --reload

5. 部署 Zabbix

5.1 创建部署目录

sudo mkdir -p /opt/zabbix/{mysql-init,zabbix-agent-conf,backups}
sudo chown -R $USER:$USER /opt/zabbix
cd /opt/zabbix

5.2 创建 Docker Compose 配置文件

version: '3.8'

services:
  # MySQL数据库服务
  zabbix-mysql:
    # 使用阿里镜像仓库的MySQL镜像
    image: registry.cn-hangzhou.aliyuncs.com/library/mysql:8.0
    container_name: zabbix-mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: SecureRoot123!
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: SecureZabbix123!
    volumes:
      - mysql-data:/var/lib/mysql
      - ./mysql-init:/docker-entrypoint-initdb.d
    networks:
      - zabbix-network
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    security_opt:
      - label:disable
    deploy:
      resources:
        limits:
          cpus: '1'
          memory: 1G

  # Zabbix Server服务
  zabbix-server:
    # 使用阿里镜像仓库的Zabbix Server镜像
    image: registry.cn-hangzhou.aliyuncs.com/zabbix/zabbix-server-mysql:alpine-latest
    container_name: zabbix-server
    restart: always
    environment:
      DB_SERVER_HOST: zabbix-mysql
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: SecureZabbix123!
      MYSQL_ROOT_PASSWORD: SecureRoot123!
      ZBX_ENABLE_SNMP_TRAPS: "true"
      ZBX_LOGLEVEL: 3
    volumes:
      - zabbix-server-data:/var/lib/zabbix
      - zabbix-snmptraps:/var/lib/zabbix/snmptraps
      - ./zabbix-scripts:/usr/lib/zabbix/externalscripts
    ports:
      - "10051:10051"
    depends_on:
      - zabbix-mysql
    networks:
      - zabbix-network
    security_opt:
      - label:disable
    deploy:
      resources:
        limits:
          cpus: '1'
          memory: 1G

  # Zabbix Web界面
  zabbix-web:
    # 使用阿里镜像仓库的Zabbix Web镜像
    image: registry.cn-hangzhou.aliyuncs.com/zabbix/zabbix-web-nginx-mysql:alpine-latest
    container_name: zabbix-web
    restart: always
    environment:
      ZBX_SERVER_HOST: zabbix-server
      DB_SERVER_HOST: zabbix-mysql
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: SecureZabbix123!
      MYSQL_ROOT_PASSWORD: SecureRoot123!
      PHP_TZ: Asia/Shanghai
      PHP_MEMORY_LIMIT: 256M
    ports:
      - "80:8080"
    depends_on:
      - zabbix-server
      - zabbix-mysql
    networks:
      - zabbix-network
    security_opt:
      - label:disable
    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: 512M

  # Zabbix Agent
  zabbix-agent:
    # 使用阿里镜像仓库的Zabbix Agent镜像
    image: registry.cn-hangzhou.aliyuncs.com/zabbix/zabbix-agent:alpine-latest
    container_name: zabbix-agent
    restart: always
    environment:
      ZBX_SERVER_HOST: zabbix-server
      ZBX_HOSTNAME: "CentOS 8 Server"
      ZBX_PASSIVE_ALLOW: "true"
      ZBX_ACTIVE_ALLOW: "true"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /etc/localtime:/etc/localtime:ro
      - ./zabbix-agent-conf:/etc/zabbix/zabbix_agentd.d
    privileged: true
    depends_on:
      - zabbix-server
    networks:
      - zabbix-network
    security_opt:
      - label:disable

networks:
  zabbix-network:
    driver: bridge

volumes:
  mysql-data:
  zabbix-server-data:
  zabbix-snmptraps:

5.3 启动 Zabbix 服务

# 拉取镜像并启动服务
docker-compose up -d

# 查看启动状态
docker-compose ps

# 查看日志(如有需要)
docker-compose logs -f

6. 设置自动启动服务

# 创建系统服务文件
sudo tee /etc/systemd/system/zabbix-docker.service <<-'EOF'
[Unit]
Description=Zabbix Docker Service
After=docker.service
Requires=docker.service

[Service]
Type=oneshot
WorkingDirectory=/opt/zabbix
ExecStart=/usr/bin/docker-compose up -d
ExecStop=/usr/bin/docker-compose down
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
EOF

# 启用服务
sudo systemctl daemon-reload
sudo systemctl enable --now zabbix-docker.service

7. 配置系统时间同步

# 安装chrony
sudo dnf install -y chrony

# 替换chrony源为阿里NTP服务器
sudo sed -i 's|^pool .*|pool ntp.aliyun.com iburst|g' /etc/chrony.conf

# 重启chrony服务
sudo systemctl restart chronyd
sudo systemctl enable chronyd

# 验证时间同步
chronyc sources

8. 访问 Zabbix Web 界面

  1. 打开浏览器访问服务器 IP 地址:http://你的服务器IP
  2. 使用默认账号登录:
    • 用户名:Admin
    • 密码:zabbix
  3. 登录后请立即修改默认密码

9. 日常维护命令

# 停止Zabbix服务
docker-compose down

# 重启Zabbix服务
docker-compose restart

# 更新Zabbix镜像(从阿里源)
docker-compose pull
docker-compose up -d

# 查看Zabbix Server日志
docker-compose logs -f zabbix-server

通过以上配置,所有软件包和 Docker 镜像都会优先从阿里源获取,大幅提升国内环境下的下载速度和部署效率。如果后续需要升级 Zabbix 版本,只需修改docker-compose.yml中的镜像标签,并执行docker-compose pull && docker-compose up即可

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小王爱eaning

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值