使用docker一键部署zabbix指南

步骤1:环境准备

# 安装 Docker & Docker Compose(若已安装可跳过)
apt update
apt install -y docker.io docker-compose git curl
systemctl enable docker --now
​
# 配置Docker镜像加速器
cat >> /etc/docker/daemon.json >> EOF
{
 "registry-mirrors": [
   "https://docker.1ms.run"
]
}
EOF
​
# 重启docker
systemctl daemon-reload
systemctl restart docker

步骤2:编写docker-compose.yml

# 创建目录
mkdir -p /zabbix
​
# 编写docker-compose.yml
vim docker-compose.yml
version: "3.8"
​
networks:
zabbix-network:
  driver: bridge
​
volumes:
db_data:
​
services:
 # 数据库服务
db:
  image: mariadb:11.2
  container_name: zabbix-db
   restart: unless-stopped
  environment:
    MYSQL_ROOT_PASSWORD: Zhou251418
    MYSQL_DATABASE: zabbix
    MYSQL_USER: zabbix
    MYSQL_PASSWORD: zabbix123
  volumes:
     - db_data:/var/lib/mysql
  networks:
     - zabbix-network
  healthcheck:
    test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
    start_period: 10s
    interval: 10s
    timeout: 5s
    retries: 3
​
 # 部署zabbix-server服务
zabbix-server:
  image: zabbix/zabbix-server-mysql:ubuntu-7.4-latest
  container_name: zabbix-server
  environment:
    DB_SERVER_HOST: db
    DB_SERVER_PORT: 3306
    MYSQL_DATABASE: zabbix
    MYSQL_USER: zabbix
    MYSQL_PASSWORD: zabbix123
  ports:
     - "10051:10051"
  depends_on:
    db:
      condition: service_healthy
   restart: unless-stopped
  networks:
     - zabbix-network
​
 # 部署web服务
web:
  image: zabbix/zabbix-web-nginx-mysql:ubuntu-7.4-latest
  container_name: zabbix-web
  environment:
    DB_SERVER_HOST: db
    DB_SERVER_PORT: 3306
    MYSQL_DATABASE: zabbix
    MYSQL_USER: zabbix
    MYSQL_PASSWORD: zabbix123
    ZBX_SERVER_HOST: zabbix-server
    ZBX_SERVER_PORT: 10051
    PHP_TZ: Asia/Shanghai
  ports:
     - "8000:8080"  # 避免端口冲突,Zabbix Web容器内部使用8080端口
  depends_on:
    zabbix-server:
      condition: service_started
    db:
      condition: service_healthy
   restart: unless-stopped
  networks:
     - zabbix-network
​
 # 部署zabbix-agent2服务
zabbix-agent:
  image: zabbix/zabbix-agent2:ubuntu-7.4-latest
  container_name: zabbix-agent
  hostname: zabbix-agent
  environment:
    ZBX_HOSTNAME: "zabbix-agent"
    ZBX_SERVER_HOST: zabbix-server  # 通过容器名通信
    ZBX_SERVER_PORT: 10051
    ZBX_ACTIVE_ALLOW: "true"
    ZBX_PASSIVE_ALLOW: "true"
    ZBX_DEBUGLEVEL: 3
    ZBX_ENABLEREMOTECOMMANDS: "0"      # 提高安全性
  privileged: true
  volumes:
     - /var/run/docker.sock:/var/run/docker.sock:ro
     - /proc:/host/proc:ro
     - /sys:/host/sys:ro
     - /:/host/root:ro
   restart: unless-stopped
  networks:
     - zabbix-network

步骤3:构建容器

docker-compose up -d
​
# 查看容器状态
docker ps | egrep "zabbix-(web|db|server|agent)"
​
# 查看容器网络
docker network ls | grenp "zabbix-network"
​
# 查看镜像
docker images
​
# 查看容器IP地址
docker network inspect zabbix_zabbix-network | grep -A 5 "zabbix-server"       # 查看zabbix服务端IP
docker network inspect zabbix_zabbix-network | grep -A 5 "zabbix-agent"        # 查看zabbix客户端IP
​
【Tips】在zabbix web页面添加主机,设置中agent类型IP地址为容器IP。
​
# 浏览器访问zabbix web
http://你宿主机的IP:8000
默认用户:admin
默认密码:zabbix

步骤4:验证zabbix server与zabbix agent的连接性

# 本地测试 Agent 是否正常工作
docker exec -it zabbix-agent zabbix_agent2 -t "system.uptime"
​
# 从 Zabbix Server 测试连接(在Server上执行)
docker exec -it zabbix-server zabbix_get -s 客户端IP -k "system.uptime"
​
【注意】 若 Zabbix Server 连接不通,请做一下操作:
1)检查客户端防火墙是否关闭,若是开启需放行10050端口
ufw allow 10050/tcp
2)云服务器需安全组设置是否放行10050端口,没有请设置允许zabbix server端10050端口访问