Part 8 - 容器的应用3

2023-08-27
4分钟阅读时长

【版本】

当前版本号v20231208

版本修改说明
v20231208更新了常见问题
v20230827初始化版本

任务8 使用容器安装 Zabbix

【任务目的】

  • 掌握 Docker 镜像的下载
  • 掌握 Docker 容器的运行
  • 掌握 Zabbix 的基本使用

【任务环境】

  • VirtualBox
  • FinalShell
  • 安装有 Docker 的 Linux 虚拟机

【任务步骤】

Docker 部署 Zabbix

  1. 创建一个虚拟的网络,用于部署多个 Zabbix 相关服务。
docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net
  1. 自动拉取 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
  1. 拉取 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
  1. 拉取 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

  1. 查看 MySQL、Zabbix服务器、Zabbix Web界面镜像是否已经下载,请自行完成命令。

  2. 查看 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
  1. 访问http://10.0.0.70/,进入 Zabbix Web登录界面。

  2. 使用以下账号登录 Zabbix

默认账号:Admin
默认密码为:zabbix

  1. 进入用户档案,进行设置。

  2. 切换界面语言为中文。

新建 Web 检测 Portainer

  1. 启动 Portainer ,命令请参考上一个任务。

  2. 新建一个 Host,用于监控上个任务运行的 Portainer。

  3. 配置 Host。

  4. 接口新建一个Agent

  5. 新建一个Web检测

  6. 创建一个Web 场景

  7. 命名为登录Portainer,每10秒试图登录一次,最多尝试次数3次。

  8. 添加登录步骤。

  9. 设置登录具体参数。

  • URL的值
http://10.0.0.70:9000/api/auth
  • 原始发布
{
  "username": "admin",
  "password": "123456789012"
}
  1. 进入Web检测界面查看是否有登录检测结果。

  2. 查看登录响应代码是否为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-mysqlzabbix-web-nginx-mysql容器。

docker start zabbix-server-mysql
docker start zabbix-web-nginx-mysql

(9)再次访问http://10.0.0.70/查看是否 Zabbix 正常启动。

扫码或长按识别访问