步骤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端口访问