Docker离线部署Zabbix监控详细方案

以下是通过 Docker 容器化实现 Zabbix 离线部署 的详细方案,支持 完全无外网环境 的安装:


一、外网环境准备(需联网设备操作)

1. 下载所需 Docker 镜像
# 核心镜像
docker pull mysql:8.0
docker pull zabbix/zabbix-server-mysql:6.0-ubuntu-latest
docker pull zabbix/zabbix-web-nginx-mysql:6.0-ubuntu-latest
docker pull zabbix/zabbix-agent:6.0-ubuntu-latest

# 可选管理工具
docker pull portainer/portainer-ce:latest
docker pull adminer:latest
2. 保存镜像为离线文件
mkdir zabbix-docker-offline
docker save -o D:/mysql.tar mysql:8.0
docker save -o D:/zabbix-server-mysql.tar zabbix/zabbix-server-mysql:ubuntu-6.0-latest
docker save -o D:/zabbix-server-web.tar zabbix/zabbix-web-nginx-mysql:6.0-ubuntu-latest
docker save -o D:/zabbix-agent.tar zabbix/zabbix-agent:6.0-latest
docker save -o D:/portainer.tar portainer/portainer-ce:latest
docker save -o D:/adminer.tar adminer:latest

# 打包传输 zabbix-docker-offline目录名称
tar czvf zabbix-docker-offline.tar.gz zabbix-docker-offline/

二、内网服务器部署(192.168.0.1)

1. 传输并加载镜像
# 上传文件到服务器
mkdir -p /opt/zabbix-docker
tar xzvf zabbix-docker-offline.tar.gz -C /opt/zabbix-docker

# 加载所有镜像
docker load -i /opt/zabbix-docker/mysql.tar
docker load -i /opt/zabbix-docker/zabbix-server.tar
docker load -i /opt/zabbix-docker/zabbix-web.tar
docker load -i /opt/zabbix-docker/zabbix-agent.tar
2. 创建持久化目录
mkdir -p /data/zabbix/{mysql,server,web}
chmod -R 777 /data/zabbix
3. 编写 docker-compose.yml
version: '3.7'

services:
  mysql-server:
    image: mysql:8.0
    container_name: zabbix-mysql
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: Z@bb1x_2023
      MYSQL_ROOT_PASSWORD: Root@2023
    volumes:
      - /data/zabbix/mysql:/var/lib/mysql
    networks:
      - zabbix-net
    command: 
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_unicode_ci

  zabbix-server:
    image: zabbix/zabbix-server-mysql:ubuntu-6.0-latest
    container_name: zabbix-server
    restart: unless-stopped
    environment:
      DB_SERVER_HOST: mysql-server
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: Z@bb1x_2023
      ZBX_ENABLE_SNMP_TRAPS: "true"
    volumes:
      - /data/zabbix/server:/var/lib/zabbix
    networks:
      - zabbix-net
    ports:
      - "10051:10051"
    depends_on:
      - mysql-server

  zabbix-web:
    image: zabbix/zabbix-web-nginx-mysql:6.0-ubuntu-latest
    container_name: zabbix-web
    restart: unless-stopped
    environment:
      DB_SERVER_HOST: mysql-server
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: Z@bb1x_2023
      ZBX_SERVER_HOST: zabbix-server
    networks:
      - zabbix-net
    ports:
      - "80:8080"
      - "443:8443"
    depends_on:
      - zabbix-server

  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    restart: always
    ports:
      - "9000:9000"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /data/zabbix/portainer:/data
    networks:
      - zabbix-net

networks:
  zabbix-net:
    driver: bridge
4. 启动服务栈
cd /opt/zabbix-docker
docker compose up -d

三、Agent节点部署(192.168.0.2 和 192.168.0.3)

1. 加载Agent镜像
docker load -i /opt/zabbix-docker/zabbix-agent.tar
2. 启动Agent容器
docker run -d \
  --name zabbix-agent \
  --privileged \
  -e ZBX_SERVER_HOST=192.168.0.1 \
  -e ZBX_HOSTNAME=node-01 \
  -p 10050:10050 \
  -v /:/rootfs \
  -v /var/run:/var/run \
  zabbix/zabbix-agent:6.0-latest

四、初始化配置

1. 访问 Web 界面
  • 浏览器访问 http://192.168.0.1
  • 默认凭证:Admin/zabbix
2. 添加监控主机
  1. 登录后进入 Configuration → Hosts → Create host
  2. 配置项:
    • Host name: node-01
    • Groups: Linux servers
    • Agent interfaces: 192.168.0.2:10050
  3. 关联模板:Linux by Zabbix agent

五、离线部署增强配置

1. 时间同步
# 所有容器添加时间同步
docker run ... \
  -v /etc/localtime:/etc/localtime:ro \
  --add-host=ntp.server:192.168.0.1
2. 数据备份
# 创建备份脚本 /opt/zabbix-docker/backup.sh
docker exec zabbix-mysql mysqldump -uzabbix -pZ@bb1x_2023 zabbix | gzip > /data/backup/zabbix-$(date +%Y%m%d).sql.gz
3. 安全加固
# 在docker-compose.yml中添加:
environment:
  - ZBX_TLSCONNECT=psk
  - ZBX_TLSACCEPT=psk
  - ZBX_TLSPSKIDENTITY=PSK001
  - ZBX_TLSPSKFILE=/etc/zabbix/psk.key
volumes:
  - ./psk.key:/etc/zabbix/psk.key

六、验证与排错

1. 检查容器状态
docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
2. 查看日志
docker logs -f zabbix-server
docker exec zabbix-mysql mysql -uzabbix -pZ@bb1x_2023 -e "SHOW DATABASES;"
3. 测试数据采集
docker exec zabbix-server zabbix_get -s 192.168.0.2 -k system.cpu.load[all,avg1]

七、扩展方案

1. 高可用部署
# 添加以下服务到docker-compose.yml
zabbix-proxy:
  image: zabbix/zabbix-proxy-mysql:6.0-latest
  environment:
    ZBX_SERVER_HOST: zabbix-server
    ZBX_HOSTNAME: proxy-01
2. 监控Docker容器
# 在Agent容器中添加:
-e ZBX_DOCKER=1
-v /var/lib/docker/containers:/var/lib/docker/containers:ro
3. 自定义监控模板
  1. 创建 /opt/zabbix-docker/custom_checks 目录
  2. 在docker-compose.yml中添加:
volumes:
  - ./custom_checks:/etc/zabbix/zabbix_agentd.d/custom

八、关键注意事项

  1. 版本一致性:确保所有组件版本均为6.0系列
  2. 存储规划:MySQL数据目录至少预留20GB空间
  3. 防火墙规则
    firewall-cmd --permanent --add-port={80,10051,10050}/tcp
    firewall-cmd --reload
    
  4. 备份策略:每日备份MySQL数据库和配置文件

此方案通过容器化实现了快速部署和易维护性,同时保留完整的扩展能力。通过 Portainer 可以方便地进行可视化容器管理,适合长期运维场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值