【版本】
当前版本号v20231208
版本 | 修改说明 |
---|---|
v20231208 | 更新了常见问题 |
v20230827 | 初始化版本 |
任务8 使用容器安装 Zabbix
【任务目的】
- 掌握 Docker 镜像的下载
- 掌握 Docker 容器的运行
- 掌握 Zabbix 的基本使用
【任务环境】
- VirtualBox
- FinalShell
- 安装有 Docker 的 Linux 虚拟机
【任务步骤】
Docker 部署 Zabbix
- 创建一个虚拟的网络,用于部署多个 Zabbix 相关服务。
docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net
- 自动拉取 MySQL 数据库镜像(MySQL:8.0-oracle),并启动容器。
docker run --name mysql-server -t \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--network=zabbix-net \
--restart unless-stopped \
-d mysql:8.0-oracle \
--character-set-server=utf8 --collation-server=utf8_bin \
--default-authentication-plugin=caching_sha2_password
- 拉取 Zabbix 服务器镜像(zabbix-server-mysql),并启动容器。
docker pull zabbix/zabbix-server-mysql:alpine-6.4-latest
docker run --name zabbix-server-mysql -t \
-e DB_SERVER_HOST="172.20.240.1" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--network=zabbix-net \
-p 10051:10051 \
--restart unless-stopped \
-d zabbix/zabbix-server-mysql:alpine-6.4-latest
- 拉取 Zabbix Web界面应用镜像(zabbix-web-nginx-mysql),并连接 MySQL数据库和 Zabbix服务器。
docker pull zabbix/zabbix-web-nginx-mysql:alpine-6.4-latest
docker run --name zabbix-web-nginx-mysql -t \
-e ZBX_SERVER_HOST="172.20.240.2" \
-e DB_SERVER_HOST="172.20.240.1" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--network=zabbix-net \
-p 80:8080 \
--restart unless-stopped \
-d zabbix/zabbix-web-nginx-mysql:alpine-6.4-latest
查看 MySQL、Zabbix服务器、Zabbix Web界面镜像是否已经下载,请自行完成命令。
查看 MySQL、Zabbix服务器、Zabbix Web界面容器是否启动,请自行完成命令。
- 正常情况下应该可以看到类似以下3个容器运行状态为 Up
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a29e97cde997 zabbix/zabbix-web-nginx-mysql:alpine-6.4-latest "docker-entrypoint.sh" 4 minutes ago Up 4 minutes 8443/tcp, 0.0.0.0:80->8080/tcp, :::80->8080/tcp zabbix-web-nginx-mysql
58a8ab886cb4 zabbix/zabbix-server-mysql:alpine-6.4-latest "/sbin/tini -- /usr/…" 12 minutes ago Up 12 minutes 0.0.0.0:10051->10051/tcp, :::10051->10051/tcp zabbix-server-mysql
c75534188672 mysql:8.0-oracle "docker-entrypoint.s…" 31 minutes ago Up 31 minutes 3306/tcp, 33060/tcp mysql-server
访问http://10.0.0.70/,进入 Zabbix Web登录界面。
使用以下账号登录 Zabbix
默认账号:Admin
默认密码为:zabbix
进入用户档案,进行设置。
切换界面语言为中文。
新建 Web 检测 Portainer
启动 Portainer ,命令请参考上一个任务。
新建一个 Host,用于监控上个任务运行的 Portainer。
配置 Host。
接口新建一个
Agent
。新建一个
Web检测
创建一个
Web 场景
命名为
登录Portainer
,每10秒试图登录一次,最多尝试次数3次。添加登录步骤。
设置登录具体参数。
- URL的值
http://10.0.0.70:9000/api/auth
- 原始发布
{
"username": "admin",
"password": "123456789012"
}
进入Web检测界面查看是否有登录检测结果。
查看登录响应代码是否为
200
,状态是否为正常
。
【常见问题】
1. Zabbix 应用(http://10.0.0.70/)无法启动,提示出错或无法访问。
答: 造成Zabbix 无法启动的原因可能有以下2个:
解决方法一:容器启动时没有按顺序启动,导致分配的 IP 错误。
(1)首先要确保3个容器的IP地址分配正确,登录Portainerhttp://10.0.0.70:9000/查看3个容器的IP是否正确,正确的 IP 地址分配应该如下图所示。
(2)如果 IP 分配不正确,停止这3个容器。并且按以下顺序依次进行启动。
docker start mysql-server
docker start zabbix-server-mysql
docker start zabbix-web-nginx-mysql
- 相关命令提示如下:
#查看docker 容器ID
docker ps
#停止容器命令
docker stop 容器ID
#启动容器命令
docker start 容器ID
解决方法二:如果你确认过3个容器的IP没有问题,则有可能是 zabbix 在导入数据库的时候脚本出错导致的。
(1)确保zabbix-server-mysql
容器启动。
(2)复制容器内的脚步压缩包到虚拟机文件目录/tmp
下。
docker cp zabbix-server-mysql:/usr/share/doc/zabbix-server-mysql/create.sql.gz /tmp/create.sql.gz
(3)解压下载的脚本压缩包。
dnf install gzip -y
gzip -d /tmp/create.sql.gz
(4)解压成功后,你可以找到/tmp
目录下有个create.sql
的脚本文件。
(5)登录 MySQL,删除 zabbix 数据库(schema)。
mysql -h 172.20.240.1 -u zabbix -pzabbix_pwd
(6)删除掉 zabbix 数据库。注意mysql>
后面的才是 SQL 命令。
mysql> drop database zabbix;
(7)重新创建 zabbix 数据库,并执行create.sql
脚本,这步可能需要几分钟才能执行完。
mysql> create database zabbix;
mysql> use zabbix;
mysql> source /tmp/create.sql
mysql> exit
(8)依次启动zabbix-server-mysql
和zabbix-web-nginx-mysql
容器。
docker start zabbix-server-mysql
docker start zabbix-web-nginx-mysql
(9)再次访问http://10.0.0.70/查看是否 Zabbix 正常启动。