下面是基于 Docker 安装 Zabbix 的详细步骤和两个示例说明:
准备工作
- 确保已经安装了 Docker 和 Docker Compose;
- 从官方仓库中拉取 Zabbix 镜像。
安装 MySQL
在本例中,我们将使用 MySQL 数据库的镜像来作为 Zabbix 的数据库。在启动 MySQL 之前,我们需要先创建一个 MySQL 数据库的镜像,并设置一个数据库和用户。我们可以通过以下步骤完成这个过程:
- 创建一个 MySQL 数据库配置文件
my.cnf
,用来配置 MySQL 数据库的参数。你可以根据以下示例创建一个my.cnf
的文件:
[mysqld]
character-set-server=utf8
collation-server=utf8_bin
skip-character-set-client-handshake
default_authentication_plugin=mysql_native_password
max_connections=1000
- 在命令行中运行以下命令来启动 MySQL 镜像,并把
my.cnf
配置文件挂载到容器中:
docker run -d --name zabbix-mysql \
-v /path/to/my.cnf:/etc/mysql/conf.d/my.cnf \
-e MYSQL_DATABASE=zabbix \
-e MYSQL_USER=zabbix \
-e MYSQL_PASSWORD=password \
-e MYSQL_ROOT_PASSWORD=password \
mysql:latest
上述命令中,我们指定了以下参数:
-d
表示以后台方式启动 MySQL 镜像;--name
指定容器的名称;-v
挂载my.cnf
文件到容器中;-e
指定环境变量,其中MYSQL_DATABASE
表示要创建的数据库名称,MYSQL_USER
和MYSQL_PASSWORD
表示用来访问该数据库的用户名和密码,MYSQL_ROOT_PASSWORD
表示 MySQL root 用户的密码;-
mysql:latest
表示我们要使用的 MySQL 镜像及其版本。 -
运行以下命令来验证容器是否已正确启动:
docker ps
你应该可以看到运行中的 zabbix-mysql
容器。
安装 Zabbix Server
接下来,我们将安装 Zabbix Server。我们可以通过以下步骤来完成这个过程:
- 确保你已经从官网上下载了 Zabbix Server 的安装包
zabbix_server-x.y.z.tar.gz
; - 在命令行中切换到该文件所在的目录,然后运行以下命令来启动 Zabbix Server 镜像:
docker run -d --name zabbix-server \
--link zabbix-mysql:mysql \
-p 10051:10051 \
-v /path/to/zabbix_server.conf:/etc/zabbix/zabbix_server.conf \
zabbix/zabbix-server-mysql:latest
上述命令中,我们指定了以下参数:
-d
表示以后台方式启动 Zabbix Server 镜像;--name
指定容器的名称;--link
将该容器连接到 MySQL 容器;-p
指定端口映射,将外部端口10051
映射到该容器的10051
端口;-v
挂载zabbix_server.conf
配置文件到容器中;-
zabbix/zabbix-server-mysql:latest
表示我们要使用的 Zabbix Server 镜像及其版本。 -
运行以下命令来验证容器是否已正确启动:
docker ps
你应该可以看到运行中的 zabbix-server
容器。
安装 Zabbix Web
最后,我们将安装 Zabbix Web 接口。我们可以通过以下步骤完成这个过程:
- 在命令行中运行以下命令来启动 Zabbix Web 镜像:
docker run -d --name zabbix-web \
--link zabbix-mysql:mysql \
--link zabbix-server:zabbix-server \
-p 80:80 \
-e DB_SERVER_HOST="mysql" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="password" \
-e MYSQL_DATABASE="zabbix" \
-e ZBX_SERVER_HOST="zabbix-server" \
-e TZ="Asia/Shanghai" \
zabbix/zabbix-web-nginx-mysql:latest
上述命令中,我们指定了以下参数:
-d
表示以后台方式启动 Zabbix Web 镜像;--name
指定容器的名称;--link
将该容器连接到 MySQL 容器和 Zabbix Server 容器;-p
指定端口映射,将外部端口80
映射到该容器的80
端口;-e
指定环境变量,其中DB_SERVER_HOST
表示 MySQL 数据库的主机名,MYSQL_USER
和MYSQL_PASSWORD
表示用来访问该数据库的用户名和密码,MYSQL_DATABASE
表示要使用的数据库名称,ZBX_SERVER_HOST
表示 Zabbix Server 的主机名,TZ
表示时区;-
zabbix/zabbix-web-nginx-mysql:latest
表示我们要使用的 Zabbix Web 镜像及其版本。 -
运行以下命令来验证容器是否已正确启动:
docker ps
你应该可以看到运行中的 zabbix-web
容器。
示例说明
下面是两个示例说明,展示如何使用 Zabbix 监控 Docker 容器:
示例一:使用 Zabbix 监控 Nginx 容器
- 在本机上启动一个 Nginx 容器。假设该容器的名称为
nginx
,它监听的端口为8080
。你可以使用以下命令启动该容器:
docker run -d --name nginx -p 8080:80 nginx:latest
-
在 Zabbix Web 中创建一个新的主机,并将
nginx
容器添加为该主机的监控对象。你可以按照以下步骤完成这个过程:- 在 Zabbix Web 中进入
Configuration -> Hosts
页面; - 点击
Create host
按钮,进入创建新主机的页面; - 在
Host name
字段中输入主机名,可以将其设置为nginx
; - 在
Groups
字段中选择一个或多个主机组,例如Linux servers
; - 在
Agent interfaces
字段中设置该主机的 IP 地址和端口号,例如172.17.0.2
和10050
; - 在
Templates
字段中选择一个或多个模板,例如Template OS Linux
; - 点击
Add
按钮,完成主机的创建。
在上述步骤完成后,你应该可以看到一个名为
nginx
的主机已经被添加到 Zabbix 中,并且正在被监控。 - 在 Zabbix Web 中进入
-
在 Zabbix Web 中创建一个名为
nginx
的新图表,并将nginx
容器的 CPU 使用率添加到该图表中。你可以按照以下步骤完成这个过程:- 在 Zabbix Web 中进入
Monitoring -> Latest data
页面; - 点击
Create screen
按钮,进入创建新图表的页面; - 在
Name
字段中输入图表的名称,例如Nginx CPU usage
; - 在
Graph items
字段中点击Add
按钮,进入添加新项的页面; - 在
Item type
字段中选择Simple graph
; - 在
Host
字段中选择nginx
; - 在
Item
字段中选择CPU usage user
; - 点击
Add
按钮,完成图表项的添加; - 点击
Add
按钮,完成图表的创建。
在上述步骤完成后,你应该可以看到一个名为
Nginx CPU usage
的新图表已经被创建,并且正在显示nginx
容器的 CPU 使用率。 - 在 Zabbix Web 中进入
示例二:使用 Zabbix 监控自定义容器
-
在本机上编写一个简单的 Python 脚本,用于生成一些随机的 CPU 使用率数据。你可以按照以下步骤完成这个过程:
- 新建一个名为
cpu_usage.py
的 Python 脚本,并将以下代码粘贴到文件中:
```python
from random import randint
from time import sleep
while True:
usage = randint(0, 100)
print("CPU usage: {}%".format(usage))
sleep(5)
```
这个脚本将会打印出一个 0 到 100 之间的随机数,然后等待 5 秒钟,然后再次生成随机数。 - 新建一个名为
-
将该 Python 脚本打包成一个 Docker 镜像。你可以按照以下步骤完成这个过程:
- 在 Python 脚本所在的目录下,新建一个名为
Dockerfile
的文件,用于构建 Docker 镜像; - 将以下代码添加到
Dockerfile
中:
```dockerfile
FROM python:3.8
WORKDIR /app
COPY cpu_usage.py .CMD ["python", "./cpu_usage.py"]
上述代码会使用 Python 3.8 镜像作为基础镜像,将 `cpu_usage.py` 文件复制到镜像中,并在容器启动时运行该脚本;
sh
- 在命令行中运行以下命令,以为该 Docker 镜像设置一个名称 `cpu-usage` 并构建该镜像:
docker build -t cpu-usage .
``` - 在 Python 脚本所在的目录下,新建一个名为
-
在本机上启动一个
cpu-usage
容器。你可以按照以下步骤完成这个过程:- 在命令行中运行以下命令,以启动该容器:
sh
docker run -d --name cpu-usage cpu-usage:latest
上述命令中,我们指定了以下参数: -d
表示以后台方式启动该容器;--name
指定容器的名称;cpu-usage:latest
表示我们要使用的 Docker 镜像及其版本。
- 在命令行中运行以下命令,以启动该容器:
-
在 Zabbix Web 中创建一个新的主机,并将
cpu-usage
容器添加为该主机的监控对象。你可以按照以下步骤完成这个过程:- 在 Zabbix Web 中进入
Configuration -> Hosts
页面; - 点击
Create host
按钮,进入创建新主机的页面; - 在
Host name
字段中输入主机名,可以将其设置为cpu-usage
; - 在
Groups
字段中选择一个或多个主机组,例如Linux servers
; - 在
Agent interfaces
字段中设置该主机的 IP 地址和端口号,例如172.17.0.3
和10050
; - 在
Templates
字段中选择一个或多个模板,例如Template OS Linux
; - 点击
Add
按钮,完成主机的创建。
在上述步骤完成后,你应该可以看到一个名为
cpu-usage
的主机已经被添加到 Zabbix 中,并且正在被监控。 - 在 Zabbix Web 中进入
-
在 Zabbix Web 中创建一个名为
cpu-usage
的新图表,并将cpu-usage
容器的 CPU 使用率添加到该图表中。你可以按照示例一中的步骤完成这个过程。
在上述示例完成后,你应该可以看到 Zabbix 成功监控了 nginx
容器和 cpu-usage
容器,并将他们的 CPU 使用率显示在了图表中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于docker安装zabbix的详细教程 - Python技术站