返回列表 发帖

CentOS8_在Docker中安装Zabbix5.0.12

查看Docker的版本信息:
[root@centos8 ~]# docker -v
Docker version 20.10.21, build baeda1f
[root@centos8 ~]#


从公网下载镜像:( 以下是下载Redhat8.4的镜像 )
[root@centos8 ~]# docker pull redhat/ubi8:8.4
8.4: Pulling from redhat/ubi8
eac1b95df832: Pull complete
47aa3ed2034c: Pull complete
Digest: sha256:6f4f2ad88d7f6590d80e6cdeeddf9d9803e9df4648f9b5e0042927403ff2ec94
Status: Downloaded newer image for redhat/ubi8:8.4
docker.io/redhat/ubi8:8.4
[root@centos8 ~]#


查看宿主机的所有镜像:
[root@centos8 ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
redhat/ubi8   8.4       b1e63aaae5cf   19 months ago   225MB
[root@centos8 ~]#


使用镜像“redhat/ubi8:8.4”创建并启动容器“Rhel8_01”:
[root@centos8 ~]# docker run --privileged -itd --name Rhel8_01 -p 80:80 -v /opt/share:/home/dir_1 redhat/ubi8:8.4 /usr/sbin/init
3fea59755237cfc3d61b9fe9b5129d127f20dfa17dc87832c3ab2c3dad91038e
[root@centos8 ~]#

注释:
--privileged + /usr/sbin/init : 获取systemctl权限;不加上的话,在容器中就无法使用命令systemctl
-itd : 以交互模式情况下后台运行。
--name : 指定容器名称。
-p 端口映射 : 第一个80是宿主机的端口,暴露给外部直接访问;第二个80是容器的端口。
-v 挂载目录 : 这里是把宿主机的目录/opt/share挂载到容器的目录/home/dir_1;假如目录不存在,就会自动创建。
redhat/ubi8:8.4 : 镜像名称:版本号


在宿主机查看所有的容器:(无论是否正在运行)
[root@centos8 ~]# docker ps -a
CONTAINER ID   IMAGE             COMMAND            CREATED          STATUS          PORTS                               NAMES
3fea59755237   redhat/ubi8:8.4   "/usr/sbin/init"   17 seconds ago   Up 15 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   Rhel8_01
[root@centos8 ~]#

注释:宿主机的TCP 80端口,映射到容器“Rhel8_01”的TCP 80端口。



###

进入容器“Rhel8_01”:
[root@centos8 ~]# docker exec -it Rhel8_01 /bin/bash
[root@3fea59755237 /]#

[root@3fea59755237 /]# pwd
/
[root@3fea59755237 /]# ls
bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@3fea59755237 /]#


查看容器“Rhel8_01”的系统版本信息:
[root@3fea59755237 /]# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.4 (Ootpa)
[root@3fea59755237 /]# uname -a
Linux 3fea59755237 4.18.0-193.el8.x86_64 #1 SMP Fri May 8 10:59:10 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@3fea59755237 /]#


SELinux默认是不可用:
[root@3fea59755237 /]# getenforce
bash: getenforce: command not found
[root@3fea59755237 /]# cat /etc/selinux/config
cat: /etc/selinux/config: No such file or directory
[root@3fea59755237 /]#



查看当前语言环境:
[root@3fea59755237 /]# echo $LANG
C.utf8
[root@3fea59755237 /]# cat /etc/locale.conf
LANG=C.utf8
[root@3fea59755237 /]#


查看容器系统的当前字符集:
[root@3fea59755237 /]# locale
LANG=C.utf8
LC_CTYPE="C.utf8"
LC_NUMERIC="C.utf8"
LC_TIME="C.utf8"
LC_COLLATE="C.utf8"
LC_MONETARY="C.utf8"
LC_MESSAGES="C.utf8"
LC_PAPER="C.utf8"
LC_NAME="C.utf8"
LC_ADDRESS="C.utf8"
LC_TELEPHONE="C.utf8"
LC_MEASUREMENT="C.utf8"
LC_IDENTIFICATION="C.utf8"
LC_ALL=
[root@3fea59755237 /]#



给容器系统安装字符集“zh_CN.UTF-8”:

要使用CentOS8的新公网Yum源,可参考:CentOS8使用CentOS-Vault源+EPEL

[root@3fea59755237 ~]# yum -y install langpacks-zh_CN.noarch

[root@3fea59755237 ~]# vi /etc/locale.conf
修改为:
LANG="zh_CN.UTF-8"


在宿主机重启容器“Rhel8_01”:
[root@centos8 ~]# docker restart Rhel8_01
Rhel8_01
[root@centos8 ~]#


再次进入容器“Rhel8_01”:
[root@centos8 ~]# docker exec -it Rhel8_01 /bin/bash
[root@3fea59755237 /]#


再次查看容器系统的当前字符集:
[root@3fea59755237 /]# locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=
[root@3fea59755237 /]#


再次查看当前语言环境:
[root@3fea59755237 /]# echo $LANG
zh_CN.UTF-8
[root@3fea59755237 /]# cat /etc/locale.conf
LANG="zh_CN.UTF-8"
[root@3fea59755237 /]#



###

在容器“Rhel8_01”中安装Zabbix5.0.12:

安装Nginx:
dnf -y install nginx

启动Nginx:
systemctl start nginx

启动容器时自动启动Nginx:
systemctl enable nginx


安装MariaDB:
yum -y install mariadb-server mariadb

启动MariaDB:
systemctl start mariadb

启动容器时自动启动MariaDB:
systemctl enable mariadb


安装PHP:
dnf -y install php php-fpm php-mysqlnd php-gd php-xml php-mbstring php-json


安装依赖软件包:
[root@3fea59755237 ~]# yum -y install gcc gcc-c++ wget autoconf automake zlib zlib-devel openssl openssl-devel pcre pcre-devel make

[root@3fea59755237 ~]# yum -y install net-snmp-devel libxml2-devel libevent libevent-devel libcurl mysql-devel curl-devel php-ldap *bcmath*


编译安装Zabbix:
tar -zxvf zabbix-5.0.12.tar.gz
cd zabbix-5.0.12
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
make install


配置数据库:( 使用数据库管理员root@localhost )
[root@3fea59755237 ~]# mysql -uroot -hlocalhost
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.3.28-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]>


创建库zabbix:
MariaDB [(none)]> Create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]>


查看库zabbix的字符集:
MariaDB [(none)]> Show create database zabbix;
+----------+----------------------------------------------------------------------------------+
| Database | Create Database                                                                  |
+----------+----------------------------------------------------------------------------------+
| zabbix   | CREATE DATABASE `zabbix` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */ |
+----------+----------------------------------------------------------------------------------+
1 row in set (0.000 sec)

MariaDB [(none)]>

笺注:库zabbix的字符集为 utf8_bin



切换到库zabbix:
MariaDB [(none)]> Use zabbix;
Database changed
MariaDB [zabbix]> Select database();
+------------+
| database() |
+------------+
| zabbix     |
+------------+
1 row in set (0.000 sec)

MariaDB [zabbix]>


导入Zabbix的表:
MariaDB [zabbix]> source /root/zabbix-5.0.12/database/mysql/schema.sql;
MariaDB [zabbix]> source /root/zabbix-5.0.12/database/mysql/images.sql;
MariaDB [zabbix]> Source /root/zabbix-5.0.12/database/mysql/data.sql;


授权数据库用户zabbix@localhost对库zabbix有完全控制的权限,密码:168
MariaDB [zabbix]> Grant all privileges on zabbix.* to zabbix@localhost identified by '168';
Query OK, 0 rows affected (0.001 sec)

MariaDB [zabbix]>



创建系统用户zabbix:
[root@3fea59755237 ~]# useradd -s /sbin/nologin zabbix

创建Zabbix的日志存放目录:
[root@3fea59755237 ~]# mkdir -p /usr/local/zabbix/logs

更改目录的属主、属组:
[root@3fea59755237 ~]# chown -R zabbix:zabbix /usr/local/zabbix



配置Zabbix本机的客户端:
[root@3fea59755237 ~]# vi /usr/local/zabbix/etc/zabbix_agentd.conf
修改:
PidFile=/usr/local/zabbix/zabbix_agentd.pid
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf



配置Zabbix本机的服务端:
[root@3fea59755237 ~]# vi /usr/local/zabbix/etc/zabbix_server.conf
修改:
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=168
DBSocket=/var/lib/mysql/mysql.sock
Timeout=4
LogSlowQueries=3000
Include=/usr/local/zabbix/etc/zabbix_server.conf.d/*.conf

备注:
[root@3fea59755237 ~]# find / -name "mysql.sock"
/var/lib/mysql/mysql.sock



启动Zabbix本机的客户端和服务端:
[root@3fea59755237 ~]# /usr/local/zabbix/sbin/zabbix_agentd
[root@3fea59755237 ~]# /usr/local/zabbix/sbin/zabbix_server

启动容器时,自动启动Zabbix本机的客户端和服务端:
[root@3fea59755237 ~]# echo '/usr/local/zabbix/sbin/zabbix_agentd' >> /etc/rc.local
[root@3fea59755237 ~]# echo '/usr/local/zabbix/sbin/zabbix_server' >> /etc/rc.local
[root@3fea59755237 ~]# chmod a+x /etc/rc.d/rc.local



复制Zabbix的Web应用程序至Nginx网站根目录:
[root@3fea59755237 ~]# mkdir -p /usr/share/nginx/html/zabbix/
[root@3fea59755237 ~]# cp -r /root/zabbix-5.0.12/ui/* /usr/share/nginx/html/zabbix/



修改PHP的配置文件:(这里不修改的话,在Web部分安装时会失败的)
[root@3fea59755237 ~]# vi /etc/php.ini
修改:
max_execution_time = 300
post_max_size = 16M
max_input_time = 300
date.timezone = Asia/Shanghai

追加:
extension=bcmath.so


重启php-fpm:
[root@3fea59755237 ~]# systemctl restart php-fpm


重启Nginx:
[root@3fea59755237 ~]# systemctl restart nginx



######

在Windows客户端进行Web页面的安装:(建议使用Frefox浏览器)
http://192.168.168.154/zabbix/
图片1.png
注释:实验中,Docker宿主机的IP地址为192.168.168.154


如果提示其他错误,可以修改PHP配置文件:
图片2.png


这里只需要输入数据库用户zabbix@localhost的密码,再点击“Next step”:
图片3.png


这里直接点击“Next step”:
图片4.png


这里直接点击“Next step”:
图片5.png


来到这里会有问题:
图片6.png

解决方法:
1. 下载文件;
2. 把文件复制到指定位置:
[root@3fea59755237 ~]# cp zabbix.conf.php /usr/share/nginx/html/zabbix/conf/zabbix.conf.php

3.点击“Finish”按键。


来到这里,点击“Finish”按键就完成安装了:
图片7.png


Admin的登录密码默认为:zabbix
图片8.png


主页:
图片9.png


默认是英文的:
Administration》Users》Admin:
图片10.png

设置用户Admin的语言为中文:
图片11.png
笺注:容器系统必须要已经安装字符集“zh_CN.UTF-8”

用户Admin的语言变为中文了:
图片12.png



###

容器“Rhel8_01”里的Zabbix可以监控其他远程主机:

但容器“Rhel8_01”要先安装以下依赖软件包:
yum -y install net-tools
yum -y install iputils
dnf -y install procps


图片13.png

图片14.png

图片15.png



查看主机ser1.zhuohua.store的图形:
图片16.png

图片17.png


图片18.png

图片19.png


图片20.png

图片21.png



查看主机ser1.zhuohua.store的告警:(主机ser1.zhuohua.store处于关机状态时
的效果)
图片22.png

图片23.png


主机ser1.zhuohua.store重新开机后的初期效果:
图片24.png

图片25.png


###

备注:
实验中,容器“Rhel8_01”重启后,Zabbix一切正常。


笺注:
Docker宿主机的防火墙其实无需特意打开任何TCP端口:
[root@centos8 ~]# firewall-cmd --zone=public --list-ports

[root@centos8 ~]#





相关文章:
最小化安装CentOS8
CentOS8_LNMP_编译安装Zabbix5.0.12
Zabbix5.0.12_使用Agent监控CentOS7(RPM包)

CentOS8_在Docker中安装Zabbix4.4.5
CentOS8_在Docker中安装MariaDB

返回列表