通过docker、docker-compose方式安装部署zabbix7.0 LTS监控平台
搭建企业级运维监控平台的工具解析——及其Zabbix详解https://coffeemilk.blog.csdn.net/article/details/153245745?spm=1001.2014.3001.5502
一、docker容器环境安装
1.1、docker中需安装部署的zabbix镜像内容
在使用docker容器来安装zabbix的时候,推荐【zabbix-server、zabbix-web使用容器】来安装,而【zabbix agent/agent2通过rpm包】方式安装。
采用docker安装zabbix,需要下载多个镜像,分别是【MySQL镜像】、【zabbix-server镜像】、【Zabbix web镜像】、【zabbix-java-gateway镜像】【zabbix-agent2镜像】。 这些镜像都可以从docker官方镜像站https://hub.docker.com/下载 | |||
序号 | zabbix内容 | zabbix在docker中对应的镜像名称 | zabbix在docker中对应的镜像地址 |
1 | zabbix-server镜像 | zabbix-server-mysql | https://hub.docker.com/r/zabbix/zabbix-server-mysql |
2 | Zabbix web镜像 | zabbix-web-nginx-mysql | https://hub.docker.com/r/zabbix/zabbix-web-nginx-mysql |
3 | Zabbix agent镜像 | zabbix-agent | https://hub.docker.com/r/zabbix/zabbix-agent |
4 | Zabbix agent2镜像 | zabbix-agent2 | https://hub.docker.com/r/zabbix/zabbix-agent2 |
5 | MySQL镜像 | mysql | https://hub.docker.com/r/zabbix/zabbix-build-mysql |
6 | Java网关 | zabbix-java-gateway | https://hub.docker.com/r/zabbix/zabbix-java-gateway |
1.2、docker容器引擎安装
要使用docker,必须先安装docker引擎。
#安装docker引擎的实操流程#1-安装docker引擎所需的依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2#2-安装配置阿里云的镜像仓库源添加到本机【/etc/yum.repos.d/docker-ce.repo】(国内访问会更加快速方便)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#3-建立缓存
yum makecache#4-安装docker-ce引擎(注意:由于我们这里使用的是Almalinux9.3的系统它默认是没有安装podman容器管理工具;但如果是红帽9及其更高版本的系统则默认安装了podman,若要安装docker-ce,则需要将podman卸载掉才能安装)
yum install docker-ce -y#5-启动docker
systemctl restart docker
systemctl status docker
ps -ef | grep docker#6-设置docker开机自启
systemctl enable docker
恭喜你!到这里表示docker已经安装完成了。
1.3、配置docker国内镜像源地址
由于docker官网在国外,国内下载会十分缓慢,因此我们需要配置一下docker镜像的下载地址,可以让我们拉取镜像更快。
#配置docker的国内镜像源地址可以更快速的拉取镜像
cd /etc/docker/
vi daemon.json#daemon.json配置的国内镜像源内容如下
{"registry-mirrors" : ["https://docker.1ms.run","https://docker-0.unsee.tech","https://mirror.iscas.ac.cn/","https://docker.1panel.live","https://registry.dockermirror.com","https://docker.imgdb.de","https://docker.m.daocloud.io","https://hub.firefly.store","https://hub.rat.dev","https://dhub.kubesre.xyz","https://cjie.eu.org","https://docker.kejilion.pro","https://docker.1panelproxy.com","https://docker.hlmirror.com","https://hub.fast360.xyz","https://dockerpull.cn","https://cr.laoyou.ip-ddns.com","https://docker.melikeme.cn"]
}#重启docker
systemctl restart docker#检查docker是否使用了我们配置的镜像源(若输出我们配置的镜像源地址链接则表示配置成功)
docker info --format '{{.RegistryConfig.Mirrors}}'
二、docker下载安装zabbix7.0 LTS
2.1、使用docker下载zabbix7.0 LTS的相关镜像
#1-拉取MySQL8.4.6的镜像
docker pull mysql:8.4.6#2-拉取支持MySQL的zabbix-server镜像
docker pull zabbix/zabbix-server-mysql:centos-7.0-latest#3-拉取基于nginx网页服务器并支持MySQL的zabbix的网页界面镜像
docker pull zabbix/zabbix-web-nginx-mysql:centos-7.0-latest#4-拉取java网关的镜像(这是因为Zabbix本身不支持直接监控Java,而是使用zabbix-java-gateway监控jvm/tomcat性能)
docker pull zabbix/zabbix-java-gateway:centos-7.0-latest#5-拉取agent2镜像
docker pull zabbix/zabbix-agent2:centos-7.0-latest#6-查看当前下载到本地的所有镜像
docker images
2.2、运行docker中zabbix的相关镜像
在启动运行zabbix等镜像之前,需要先创建一个新的docker网络。用于将zabbix-server、mysql、web等容器都加入到此网络中,方便互相访问。
zabbix的web管理界面主机仪表盘不显示中文或中文显示异常的中文英文字体资源-CSDN下载https://download.csdn.net/download/xiaochenXIHUA/92134136?spm=1001.2101.3001.9500
#运行docker容器中zabbix的相关镜像实操流程#1-创建docker网络
docker network create -d bridge zabbix_net
docker network ls#2-运行mysql镜像,创建mysql容器(实现用主机的13335端口映射容器的3306端口、主机时区映射到容器时区实现同步、将主机的【/data/dockerdata/zabbix/db】路径映射到容器中,实现容器中的mysql数据持久化到主机的该路径中)
mkdir -p /data/dockerdata/zabbixdocker run -itd -p 13335:3306 --name zabbix-mysql8.4.6 --network zabbix_net --restart unless-stopped -v /etc/localtime:/etc/localtime -v /data/dockerdata/zabbix/db:/var/lib/mysql -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="abc123456" mysql:8.4.6 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin --default-time-zone='+8:00' --log_timestamps=system --lower_case_table_names=1ls /data/dockerdata/zabbix/db/docker psdocker logs 容器的id#3-运行zabbix-java-gateway镜像,创建java网关容器
docker run -v /etc/localtime:/etc/localtime -dit --restart=always --name=zabbix-java-gateway --network zabbix_net zabbix/zabbix-java-gateway:centos-7.0-latestdocker ps#4-运行zabbix-server-mysql镜像,创建zabbix-server-mysql容器
#4.1-创建zabbix-server-mysql容器之前,首先创建数据卷zabbix-server-vol,docker容器对创建的数据卷具有管理(如:创建、删除、修改等权限);而-v指定的映射数据docker只有共享权限,没有管理权限
docker volume create zabbix-server-vol#4.2-启动zabbix-server-mysql容器
mkdir -p /usr/lib/zabbix/docker run -dit -p 10051:10051 --mount source=zabbix-server-vol,target=/etc/zabbix -v /etc/localtime:/etc/localtime -v /usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts --name=zabbix-server-mysql --restart=always --network zabbix_net -e DB_SERVER_HOST="zabbix-mysql8.4.6" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="abc123456" -e ZBX_JAVAGATEWAY="zabbix-java-gateway" -e ZBX_JAVAGATEWAY_ENABLE="true" -e ZBX_JAVAGATEWAYPORT=10052 zabbix/zabbix-server-mysql:centos-7.0-latest#查看所有正在运行的容器
docker ps#查看指定容器ID的日志信息
docker logs 容器的id#5-运行zabbix-web-nginx-mysql镜像
#先创建zabbix所需的中文字体目录并进入该目录
mkdir /data/dockerdata/zabbix/fonts
cd /data/dockerdata/zabbix/fonts#然后上传zabbix所需的中文字体文件【DejaVuSans-cn.ttf】并修改名称为【DejaVuSans.ttf 】
rz
mv DejaVuSans-cn.ttf DejaVuSans.ttf#最后就是运行zabbix-web-nginx-mysql容器
docker run -dit -p 8090:8080 -v /etc/localtime:/etc/localtime -v /data/dockerdata/zabbix/fonts/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf --name zabbix-web-nginx-mysql --restart=always --network zabbix_net -e DB_SERVER_HOST="zabbix-mysql8.4.6" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="abc123456" -e ZBX_SERVER_HOST="zabbix-server-mysql" zabbix/zabbix-web-nginx-mysql:centos-7.0-latest#查看所有正在运行的容器
docker ps#查看指定容器ID的日志信息
docker logs 容器的id#6-运行zabbix-agent2镜像
docker run -dit --name zabbix-agent2 -p 10050:10050 -v /var/run/docker.sock:/var/run/docker.sock --network zabbix_net -e ZBX_HOSTNAME="Zabbix server" -e ZBX_SERVER_HOST="zabbix-server-mysql" -e ZBX_SERVER_PORT=10051 --privileged zabbix/zabbix-agent2:centos-7.0-latest#6.1-运行zabbix-agent镜像(注意agent2与agent只用安装一个就行,首选agent2)
docker run -dit --name zabbix-agent -p 10050:10050 --network zabbix_net -e ZBX_HOSTNAME="Zabbix server" -e ZBX_SERVER_HOST="zabbix-server-mysql" -e ZBX_SERVER_PORT=10051 zabbix/zabbix-agent:centos-7.0-latest
注意:在运行zabbix-server-mysql容器后,查看该容器的日志提示“character set name or collation name that is not supported by Zabbix found in 579 column(s) of database "zabbix".only character set(s) "utf8,utf8mb3,utf8mb4" and corresponding collation(s) "utf8_bin,utf8mb3_bin,utf8mb4_bin" should be used in database”提示时,需要对【zabbix】数据库的字符编码进行修改为【character set utf8mb4 collate utf8mb4_bin】,
#修改mysql数据库中【zabbix】数据库的编码为【character set utf8mb4 collate utf8mb4_bin】实操
/usr/local/mysql/mysql-8.4.6/bin/mysql -h 127.0.0.1 -P 13335 -uroot -p'abc123456'
show databases;
use zabbix;
SELECT @@character_set_database, @@collation_database;
alter database zabbix character set utf8mb4 collate utf8mb4_bin;
flush privileges;
SELECT @@character_set_database, @@collation_database;
exit;
2.3、打开zabbix的web前端界面进行配置安装
注意:我们需要检查本机的防火墙是否开启,若开启了则需要先关闭或者需要放开8090端口。
查看安装了zabbix本机的IP地址+刚才查看的nginx端口(如:192.168.1.37:8090)即可访问
#查看安装了zabbix服务主机的IP地址命令
ip addr#查看防火墙是否开启
systemctl status firewalld#禁用防火墙命令
systemctl stop firewalld
修改zabbix的Web界面的语言显示中文、时区和修改密码操作:选择Web界面左下角的【User settings】-->【Profile】-->【User】-->【Change password】后输入初始密码zabbix在输入自己的新密码-->【Language选择Chinese(zh-CN)】-->【Time zone选择(UTC+08:00)Asia/Shanghai】-->【Update】-->【确定】然后使用【Admin】用户的新密重新登录即可,详细操作如下图所示:
注意:在zabbix的Web仪表盘这里显示“Linux: Zabbix agent is not available (for 3m)”时是由于我们当前的监测的zabbix server是在docker容器里面(容器里面的容器ip地址是随时变动的,不能直接使用IP地址;只能使用DNS名称方式连接,可以运行【docker ps】查看在容器中运行的zabbix-agent2信息填写到这里即可【默认DNS名称是 agent2;连接方式是 DNS;端口是 10050】)详细操作如下图所示:
三、docker-compose一键安装zabbix7.0 LTS
3.1、下载安装docker-compose
docker-compose是用来做docker的多容器控制,有了docker-compose,我们可以把所有繁琐的docker操作全都一条命令,自动化的完成。
要使用docker-compose,需要安装一个工具docker-compose,可直接从官方:https://github.com/docker/compose/releases 处下载编译好的二进制文件即可。
#下载docker-compose方法(只用选择一个方法下载即可)#1-创建【/usr/local/bin】目录
mkdir -p /usr/local/bin/#2-方法一:下载最新的docker-compose二进制文件到本机的【/usr/local/bin】目录
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose#2-方法二:下载指定版本(如:v2.40.0)的docker-compose二进制文件到本机的【/usr/local/bin】目录
curl -L https://github.com/docker/compose/releases/download/v2.40.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose#3-给下载好的docker-compose二进制文件添加执行权限
chmod +x /usr/local/bin/docker-compose#4-验证docker-compose是否安装成功(若输出docker compose的版本信息内容则表示成功,否则失败)
docker-compose --version
3.2、使用docker-compose一键安装zabbix7.0 LTS
#使用docker-compose一键安装zabbix实操流程#1-创建【/data/zabbix】目录并进入
mkdir -p /data/zabbix
cd /data/zabbix#2-创建字体文件目录并上传中文字体文件
mkdir -p /data/zabbix/fonts
cd /fonts
rz
mv DejaVuSans-cn.ttf DejaVuSans.ttf#3-返回【/data/zabbix】目录并编辑【docker-compose.yml】文件
cd /data/zabbix
vi docker-compose.yml#docker-compose.yml中的完整内容如下:
version: '3'
services:zabbix-web-nginx-mysql:image: zabbix/zabbix-web-nginx-mysql:centos-7.0-latestrestart: alwaysenvironment:- DB_SERVER_HOST=zabbix-mysql8.4.6- MYSQL_DATABASE=zabbix- MYSQL_USER=zabbix- MYSQL_PASSWORD=zabbix123- MYSQL_ROOT_PASSWORD=abc123456- ZBX_SERVER_HOST=zabbix-server-mysqlports:- 8090:8080volumes:- /etc/localtime:/etc/localtime- /data/zabbix/fonts/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttfnetworks:- zabbix_netdepends_on:- zabbix-mysql8.4.6- zabbix-server-mysqlzabbix-mysql8.4.6:image: mysql:8.4.6restart: unless-stoppedenvironment:- MYSQL_DATABASE=zabbix- MYSQL_USER=zabbix- MYSQL_PASSWORD=zabbix123- MYSQL_ROOT_PASSWORD=abc123456ports:- 13335:3306command:- mysqld- --character-set-server=utf8mb4- --collation-server=utf8mb4_bin- --default-time-zone=+8:00- --log_timestamps=system- --lower_case_table_names=1volumes:- /etc/localtime:/etc/localtime- /data/zabbix/db:/var/lib/mysqlnetworks:- zabbix_netzabbix-java-gateway:image: zabbix/zabbix-java-gateway:centos-7.0-latestrestart: alwaysvolumes:- /etc/localtime:/etc/localtimenetworks:- zabbix_netzabbix-server-mysql:image: zabbix/zabbix-server-mysql:centos-7.0-latestrestart: alwaysvolumes:- zabbix-server-vol:/etc/zabbix- /data/zabbix/alertscripts:/usr/lib/zabbix/alertscripts- /etc/localtime:/etc/localtimeports:- 10051:10051environment:- DB_SERVER_HOST=zabbix-mysql8.4.6- MYSQL_DATABASE=zabbix- MYSQL_USER=zabbix- MYSQL_PASSWORD=zabbix123- MYSQL_ROOT_PASSWORD=abc123456- ZBX_JAVAGATEWAY=zabbix-java-gateway- ZBX_JAVAGATEWAY_ENABLE=true- ZBX_JAVAGATEWAYPORT=10052- ZBX_STARTPOLLERS=15- ZBX_STARTTRAPPERS=10- ZBX_STARTDISCOVERERS=5depends_on:- zabbix-mysql8.4.6networks:- zabbix_netzabbix-agent2:image: zabbix/zabbix-agent2:centos-7.0-latestrestart: alwaysports:- 10050:10050environment:- ZBX_HOSTNAME=Zabbix server- ZBX_SERVER_HOST=zabbix-server-mysql- ZBX_SERVER_PORT=10051networks:- zabbix_netnetworks:zabbix_net:driver: bridgevolumes:zabbix-server-vol:#4-创建mysql数据库与脚本目录
mkdir -p /data/zabbix {db,alertscripts}#5-进入【docker-compose.yml】所在的目录【/data/zabbix】中一键安装zabbix
cd /data/zabbix
docker-compose up -d
注意:如果在执行【docker-compose up -d】命令安装时提示“yaml: line 88: could not find expected ':'”是由于当前docker-compose.yml文件中有特殊字符,需要我们编辑docker-compose.yml文件将里面的特殊字符删除后保存退出,再次重试即可,如下图所示:
注意:如果在执行【docker-compose up -d】命令安装时提示“ ✘ zabbix-mysql8.4.6 Error Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while aw... 15.0s
Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)”错误,则需要按照本文前面《 1.3、配置docker国内镜像源地址》内容配置后重试即可。
3.3、打开zabbix的web前端界面进行配置安装
注意:我们需要检查本机的防火墙是否开启,若开启了则需要先关闭或者需要放开8090端口。
查看安装了zabbix本机的IP地址+刚才查看的nginx端口(如:192.168.1.38:8090)即可访问
#查看安装了zabbix服务主机的IP地址命令
ip addr#查看防火墙是否开启
systemctl status firewalld#禁用防火墙命令
systemctl stop firewalld
修改zabbix的Web界面的语言显示中文、时区和修改密码操作:选择Web界面左下角的【User settings】-->【Profile】-->【User】-->【Change password】后输入初始密码zabbix在输入自己的新密码-->【Language选择Chinese(zh-CN)】-->【Time zone选择(UTC+08:00)Asia/Shanghai】-->【Update】-->【确定】然后使用【Admin】用户的新密重新登录即可,详细操作如下图所示:
注意:在zabbix的Web仪表盘这里显示“Linux: Zabbix agent is not available (for 3m)”时是由于我们当前的监测的zabbix server是在docker容器里面(容器里面的容器ip地址是随时变动的,不能直接使用IP地址;只能使用DNS名称方式连接,可以运行【docker ps】查看在容器中运行的zabbix-agent2信息填写到这里即可【默认DNS名称是 zabbix-zabbix-agent2-1;连接方式是 DNS;端口是 10050】)详细操作如下图所示:
3.4、参考连接
Zabbix Docker imageshttps://www.zabbix.com/container_images5 从容器安装
https://www.zabbix.com/documentation/7.0/zh/manual/installation/containers
Docker的介绍、保姆级安装和使用https://blog.csdn.net/xiaochenXIHUA/article/details/141286596