Docker版Zabbix监控
📋 准备工作:检查 Docker 是否安装
# 查看 Docker 版本,确认 Docker 已安装并运行
docker --version
# 查看 Docker 服务状态,确保服务是启动的
systemctl status docker
# 如果没启动,用下面命令启动:
# sudo systemctl start docker第一步:创建 Docker 专用网络
# docker network create = 创建一个虚拟网络
# zabbix-net = 给这个网络起个名字(可以自己取名)
# 作用:让后面启动的多个容器可以通过这个网络互相通信
# 就像给它们连到同一个交换机上,彼此能用容器名当 IP 地址访问
docker network create zabbix-net
# 验证网络是否创建成功
docker network ls
# 应该能看到 zabbix-net 在列表里第二步:启动 MySQL 数据库容器
# docker run = 创建并启动一个新容器
# -d = 后台运行(detach 模式),不影响你继续敲命令
# --name zabbix-mysql = 给容器起名叫 zabbix-mysql(后面 Server 要凭这个名字找到它)
# --network zabbix-net = 让这个容器加入刚才创建的网络
# --restart unless-stopped = 容器意外退出时自动重启(除非你手动 stop)
#
# -e = environment,设置环境变量(相当于给容器内部传配置参数)
# MYSQL_DATABASE="zabbix" = 创建一个叫 zabbix 的数据库
# MYSQL_USER="zabbix" = 创建一个叫 zabbix 的数据库用户
# MYSQL_PASSWORD="zabbix123" = 该用户的密码(你可以改)
# MYSQL_ROOT_PASSWORD="root123" = root 管理员密码(你可以改)
#
# mysql:8.0 = 使用 MySQL 8.0 版本的镜像
# --character-set-server=utf8mb4 = 设置数据库字符编码(支持中文)
# --collation-server=utf8mb4_bin = 设置数据库排序规则
docker run -d \
--name zabbix-mysql \
--network zabbix-net \
--restart unless-stopped \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix123" \
-e MYSQL_ROOT_PASSWORD="root123" \
mysql:8.0.39 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_bin
# 查看容器是否启动成功
docker ps
# 应该能看到 zabbix-mysql 在运行第三步:启动 Zabbix Server 容器(核心大脑)
# --name zabbix-server = 容器名叫 zabbix-server
# -p 10051:10051 = 端口映射:宿主机端口:容器端口
# 作用:把容器内部的 10051 端口暴露出来,让外部(比如被监控的机器)能访问
# 10051 是 Zabbix Server 监听 Agent 上报数据的默认端口
#
# 环境变量说明:
# DB_SERVER_HOST="zabbix-mysql" = 告诉 Server 数据库在哪里
# 这里填的是 MySQL 容器的名字(因为它们在同一个网络里,可以用容器名通信)
# MYSQL_DATABASE/USER/PASSWORD = 填刚才创建数据库时的信息,必须一致!
# MYSQL_ROOT_PASSWORD = root 密码也要填,Server 需要用 root 权限初始化表结构
#
# zabbix/zabbix-server-mysql:alpine-latest = 镜像名
# alpine 版本体积更小,适合学习使用
docker run -d \
--name zabbix-server \
--network zabbix-net \
--restart unless-stopped \
-p 10051:10051 \
-e DB_SERVER_HOST="zabbix-mysql" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix123" \
-e MYSQL_ROOT_PASSWORD="root123" \
zabbix/zabbix-server-mysql:alpine-latest
# 查看启动日志(确认 Server 正常连接数据库并初始化)
docker logs zabbix-server
# 如果看到类似 "starting Zabbix Server" 就说明成功了第四步:启动 Zabbix Web 界面容器(网页管理后台)
# --name zabbix-web = 容器名叫 zabbix-web
# -p 8080:8080 = 把容器 8080 端口映射到宿主机 8080 端口
# 等会儿浏览器访问 http://你的IP:8080 就能看到登录页面
#
# 环境变量说明:
# ZBX_SERVER_HOST="zabbix-server" = Web 界面要连接哪个 Server
# 填 Server 容器的名字,这样 Web 和 Server 就能通信了
# DB_SERVER_HOST="zabbix-mysql" = Web 也要连接数据库(用来读取配置等信息)
# MYSQL_* = 数据库的账号密码,和之前保持一致
#
# zabbix/zabbix-web-nginx-mysql:alpine-latest = 使用 Nginx 作为 Web 服务器
docker run -d \
--name zabbix-web \
--network zabbix-net \
--restart unless-stopped \
-p 8080:8080 \
-e ZBX_SERVER_HOST="zabbix-server" \
-e DB_SERVER_HOST="zabbix-mysql" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix123" \
-e MYSQL_ROOT_PASSWORD="root123" \
zabbix/zabbix-web-nginx-mysql:alpine-latest
# 查看 Web 容器的日志
docker logs zabbix-web
# 如果看到 "Configuration OK" 或类似信息,说明 Web 配置成功第五步:检查所有容器运行状态
# 列出所有正在运行的容器
docker ps
# 理想情况下应该看到三个容器都在运行:
# CONTAINER ID IMAGE STATUS
# xxxx mysql:8.0 Up
# xxxx zabbix/zabbix-server-mysql:alpine-latest Up
# xxxx zabbix/zabbix-web-nginx-mysql:alpine-latest Up
# 如果某个容器没启动,用 docker logs 容器名 查看错误原因第六步:登录 Zabbix Web 界面
打开浏览器,输入地址:
http://你的服务器IP地址:8080注意:如果是在本地虚拟机实验,IP 就是
127.0.0.1或localhost使用默认账号登录:
用户名:
Admin(注意首字母大写)密码:
zabbix(全部小写)
第一次登录提示:可能会看到一个“数据库初始化中”的提示,等 1-2 分钟刷新即可。
因为 Zabbix Server 第一次启动需要创建大量数据表,耗时较长。
第七步(扩展):启动 Zabbix Agent 来监控这台服务器
# --name zabbix-agent = 容器名叫 zabbix-agent
# --network zabbix-net = 加入同一个网络,这样才能和 Server 通信
#
# 环境变量说明:
# ZBX_HOSTNAME="zabbix-agent" = 给这台被监控的机器起个名字(在 Web 界面会显示)
# ZBX_SERVER_HOST="zabbix-server" = 告诉 Agent 数据要上报给哪个 Server
# 填 Server 容器的名字
#
# zabbix/zabbix-agent:alpine-latest = Zabbix Agent 的镜像(注意是 agent,不是 agent2)
docker run -d \
--name zabbix-agent \
--network zabbix-net \
--restart unless-stopped \
-e ZBX_HOSTNAME="zabbix-agent" \
-e ZBX_SERVER_HOST="zabbix-server" \
zabbix/zabbix-agent:alpine-latest
# 查看 Agent 日志,确认连接成功
docker logs zabbix-agent🧹 常用清理命令(如果搞乱了想重来)
# 查看所有容器(包括停止的)
docker ps -a
# 停止容器
docker stop zabbix-web zabbix-server zabbix-mysql zabbix-agent
# 删除容器(加 -f 强制删除)
docker rm -f zabbix-web zabbix-server zabbix-mysql zabbix-agent
# 删除网络
docker network rm zabbix-net
# 如果想彻底清理,还可以删除镜像(谨慎操作)
# docker rmi mysql:8.0 zabbix/zabbix-server-mysql:alpine-latest ...💡 新手常见问题排查
原创
Docker版Zabbix监控
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法