ZABBIX(docker版)安装

介绍以下安装环境:

  • 操作系统:CentOS 7.6
  • docker版本:18.09.0
  • zabbix版本:4.0.3
  • mysql版本:8.

首先我已经在有外网的环境下下载了zabbix和MySQL的镜像并且打包传递到离线服务器上。由于之前的文章已经有介绍过如何离线获取镜像,并且大家下载软件版本很可能都一样,所以这里不在详述该操作。下面操作我们将在内网机器完成:

1.建立一个docker的虚拟网络:

[root@localhost docker_evn_file]# docker network create zabbix_app_net
50ed468f8b6374e28cfce95341cad2129f09363148ed380ca82a8376cf5026dc

1.安装MySQL8.0容器。

   先加载打包好的镜像:

[root@localhost ~]# docker load -i mysql8.tar 
0a07e81f5da3: Loading layer [==================================================>]  58.47MB/58.47MB
3d33930b279a: Loading layer [==================================================>]  338.4kB/338.4kB
7412b239e6a1: Loading layer [==================================================>]  10.44MB/10.44MB
7756685f09e9: Loading layer [==================================================>]  4.472MB/4.472MB
7d390c8db6fd: Loading layer [==================================================>]  1.536kB/1.536kB
73ea790d3afa: Loading layer [==================================================>]  46.15MB/46.15MB
5d6846033b0c: Loading layer [==================================================>]  31.74kB/31.74kB
506f749581f6: Loading layer [==================================================>]  3.584kB/3.584kB
a1cb89945ac3: Loading layer [==================================================>]  362.1MB/362.1MB
8103990ddb33: Loading layer [==================================================>]  5.632kB/5.632kB
3aa676232fff: Loading layer [==================================================>]  9.728kB/9.728kB
6e4a6c599b1d: Loading layer [==================================================>]  1.536kB/1.536kB
Loaded image: mysql:8.0.15
[root@localhost ~]# docker images|grep mysql
mysql                              8.0.15              81f094a7e4cc        Less than a second ago   477MB

编辑MySQL启动需要的一些环境变量并形成参数文件,这里我新建了一个zabbix_mysql_8.list 的文件

(注意这里变量值不要加“”否则参数会认不出来):

[root@localhost docker_env_file]# cat zabbix_mysql_8.list 
MYSQL_ROOT_PASSWORD=root
MYSQL_DATABASE=zabbix
MYSQL_USER=zabbix
MYSQL_PASSWORD=zabbix

执行docker run 生成MySQL容器:

[root@localhost mysqldata]# docker run --name zabbix-mysql-8 \
>            --net=zabbix_app_net \
>            -p 3306 \
>            -v /root/mysql_etc_file/conf.d:/etc/mysql/conf.d \
>            -v /mysqldata:/var/lib/mysql \
>            --env-file /root/docker_env_file/zabbix_mysql_8.list \
>            -d mysql:8.0.15 \
>            --character-set-server=utf8mb4 \
>            --collation-server=utf8mb4_unicode_ci \
> 
f364359d69379ca0aa08913a45acf1d9d1fa4a09f032d91d02c160ee4e98150d
[root@localhost mysqldata]# ls
auto.cnf       ca-key.pem       client-key.pem  ib_logfile0  #innodb_temp  performance_schema  server-cert.pem  undo_001
binlog.000001  ca.pem           ib_buffer_pool  ib_logfile1  mysql         private_key.pem     server-key.pem   undo_002
binlog.index   client-cert.pem  ibdata1         ibtmp1       mysql.ibd     public_key.pem      sys              zabbix
[root@localhost mysqldata]#

这里简单介绍一下docker run 时候带的参数含义:

  • --name 容器的名称
  • --net 容器加入zabbix_app_net网络
  • --env-file 加载容器启动时需要的参数文件,由于参数过多所以这里使用文件将参数全部写入,也可以使用-e将参数一一列出
  • --d 镜像名称
  • --v 宿主机和容器文件之间进行映射,这样可以不用进入容器修改MySQL的配置文件,MySQL的数据文件也得到持久保存,不随容器而消亡。注意:只有dockerfile中设置VOLUME的目录容器中的内容才能映射到宿主机,否则只能从宿主机映射到容器。例如如果上述命令中加入 -v /root/mysql_etc_file/conf.d:/etc/mysql/conf.d 因为dockerfile中没有对/etc/mysql/conf.d 进行VOLUME说明,容器启动时候不能写入该目录,但会读取该目录中的配置文件(mysql.cnf)。
  • 其他两个参数是mysql的参数设置字符集,这里可能有的同学可能会问mysql参数容器怎么会识别,这个就要看dockerfile最后执行命令可以接收的参数。

这里使用的是MySQL8,由于MySQL登录认证机制有所改变,需要在数据库中执行以下命令否则zabbix-server将无法连接数据库。

[root@localhost zabbix_etc_file]# docker exec -it zabbix-mysql-8 mysql -uroot -proot
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 41
Server version: 8.0.15 MySQL Community Server - GPL

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> mysql> 
mysql> ALTER USER 'zabbix'@'%' IDENTIFIED WITH mysql_native_password  BY 'zabbix';
Query OK, 0 rows affected (0.01 sec)

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password  BY 'root';
Query OK, 0 rows affected (0.01 sec)

mysql> 

2.安装zabbix-server容器:
先加载打包好的镜像:

[root@localhost ~]# docker load -i zabbix-server-mysql.tar

编辑zabbix-server启动需要的一些环境变量并形成参数文件,这里我新建了一个zabbix_server_8.list的文件

[root@localhost docker_env_file]# cat zabbix_server_8.list 
MYSQL_DATABASE=zabbix
MYSQL_USER=zabbix
MYSQL_PASSWORD=zabbix
ZBX_JAVAGATEWAY=zabbix-java-gateway
DB_SERVER_HOST=zabbix-mysql-8

执行docker run 生成zabbix-server容器:

[root@localhost docker_env_file]# docker run --name zabbix-server-mysql-8 -t \
>            --net=zabbix_app_net \
>            --env-file /root/docker_env_file/zabbix_server_8.list \
>            -v /root/zabbix_etc_file/alertscripts:/usr/lib/zabbix/alertscripts \
>            -p 10051 \
>            -d zabbix/zabbix-server-mysql:centos-4.0.3 
11aca8faffb4a83dadc840c78de03e5e36925e1a28a3a26149035a7c84933213
[root@localhost docker_env_file]# 

使用docker logs 查看日志:

[root@localhost zabbix_etc_file]# docker logs zabbix-server-mysql-8
** Deploying Zabbix server with mysql database
** Preparing the system
** Preparing Zabbix server
********************
* DB_SERVER_HOST: zabbix-mysql-8
* DB_SERVER_PORT: 3306
* DB_SERVER_DBNAME: zabbix
* DB_SERVER_ZBX_USER: zabbix
* DB_SERVER_ZBX_PASS: zabbix
********************

3.安装zabbix-web容器
先加载打包好的镜像:

[root@localhost ~]# docker load -i zabbix-web-nginx-mysql.tar
87feb0ffa19d: Loading layer [==================================================>]  39.12MB/39.12MB
ad445717a861: Loading layer [==================================================>]  151.8MB/151.8MB
846df8ae3852: Loading layer [==================================================>]  6.144kB/6.144kB
38f6d8cf0be4: Loading layer [==================================================>]  4.608kB/4.608kB
7d7b3799a372: Loading layer [==================================================>]  5.632kB/5.632kB
f3420e4e6577: Loading layer [==================================================>]  4.096kB/4.096kB
f2a44f32a642: Loading layer [==================================================>]  4.608kB/4.608kB
0f64cc432ff7: Loading layer [==================================================>]  25.09kB/25.09kB
a332aa3aec7f: Loading layer [==================================================>]  3.072kB/3.072kB
f4f6763090ac: Loading layer [==================================================>]  45.06kB/45.06kB
Loaded image: zabbix/zabbix-web-nginx-mysql:centos-4.0.3

编辑zabbix-web启动需要的一些环境变量并形成参数文件,这里我新建了一个zabbix_web_8.list的文件

[root@localhost docker_env_file]# cat zabbix_web_8.list 
DB_SERVER_HOST=zabbix-mysql-8
MYSQL_USER=zabbix
MYSQL_PASSWORD=zabbix
ZBX_SERVER_HOST=zabbix-server-mysql-8

执行docker run 生成zabbix-web容器:

[root@localhost docker_env_file]# docker run --name zabbix-web-nginx-mysql-8 \
>            --net=zabbix_app_net \
>            -p80 \
>            --env-file /root/docker_env_file/zabbix_web_8.list \
>            -d zabbix/zabbix-web-nginx-mysql:centos-4.0.3
\2328085d277e3763fc36e3202bead2168f67c54adc75298a08732d0d9800d737
[root@localhost docker_env_file]#

查看在宿主机的映射端口:

[root@localhost docker_env_file]# docker port zabbix-web-nginx-mysql-8
80/tcp -> 0.0.0.0:32777

浏览器打开页面:

http://宿主机IP地址:32777/

登录zabbix使用默认用户Admin密码zabbix

 

本次安装参考的相关文档:

https://hub.docker.com/_/mysql

https://dev.mysql.com/doc/refman/8.0/en/linux-installation-docker.html

https://hub.docker.com/r/zabbix/zabbix-server-mysql

https://hub.docker.com/r/zabbix/zabbix-web-nginx-mysql

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当你准备在 Docker 中部署 Zabbix 时,最好的方法是使用官方的 Zabbix Docker 镜像。以下是详细步骤: 1. 首先,从 Docker Hub 上拉取 Zabbix 镜像,使用以下命令: ``` docker pull zabbix/zabbix-server-mysql:latest ``` 2. 接下来,创建一个 Docker 网络以便容器能够互相通信。使用以下命令: ``` docker network create zabbix_network ``` 3. 然后,启动一个 MySQL 容器。在启动容器时,我们需要指定一个 root 密码,并且将容器连接到之前创建的网络中。使用以下命令: ``` docker run --name zabbix-mysql-server \ -e MYSQL_ROOT_PASSWORD=my_password \ -e MYSQL_USER=zabbix \ -e MYSQL_PASSWORD=zabbix \ -e MYSQL_DATABASE=zabbix \ --network zabbix_network \ -d mysql:latest \ --character-set-server=utf8 --collation-server=utf8_bin ``` 4. 启动 Zabbix Server 容器。在启动容器时,我们需要将其连接到之前创建的网络中,并指定 MySQL 主机和密码。使用以下命令: ``` docker run --name zabbix-server \ -e DB_SERVER_HOST=zabbix-mysql-server \ -e MYSQL_USER=zabbix \ -e MYSQL_PASSWORD=zabbix \ -e MYSQL_DATABASE=zabbix \ --network zabbix_network \ -p 10051:10051 \ -d zabbix/zabbix-server-mysql:latest ``` 5. 最后,启动 Zabbix Web 容器。同样需要将其连接到之前创建的网络中,并将其映射到本地端口以便我们可以通过浏览器访问。使用以下命令: ``` docker run --name zabbix-web-nginx-mysql \ -e DB_SERVER_HOST=zabbix-mysql-server \ -e MYSQL_USER=zabbix \ -e MYSQL_PASSWORD=zabbix \ -e MYSQL_DATABASE=zabbix \ --network zabbix_network \ -p 80:80 \ -d zabbix/zabbix-web-nginx-mysql:latest ``` 这样就完成了 ZabbixDocker 安装部署。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值