使用docker部署mysql8.0+zabbix5.0

本文详细介绍了如何使用Docker部署Zabbix监控系统,包括Zabbix的简介、部署步骤,如创建网络、构建MySQL、Zabbix-server、Zabbix-web容器,并解决了图表乱码问题。通过这个教程,读者可以学习到Docker容器化部署企业级监控工具的方法。
摘要由CSDN通过智能技术生成

请添加图片描述

大家好,我是早九晚十二,目前是做运维相关的工作。写博客是为了积累,希望大家一起进步!
我的主页:早九晚十二

什么是zabbix

zabbix是目前最流行的监控工具之一。

zabbix([`zæbiks])是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上

部署zabbix的方式

常用的方式有二进制(yum)安装,源码安装,基于容器(docker)的虚拟化安装。
今天我们主要讲一下基于docker部署zabbix。

安装docker

首先先安装docker服务,可参照以前的文章centos安装docker

拉取服务镜像

zabbix官方文档:官网文档
zabbix hub:zabbix hub

#如果使用已经部署好的本地化数据库,就无须下载。如果使用的非mysql,需下载对应的zabbix镜像包
docker pull mysql:8.0.26
docker pull zabbix/zabbix-server-mysql:centos-latest
docker pull zabbix/zabbix-web-nginx-mysql:latest
docker pull zabbix/zabbix-java-gateway:latest

创建mysql挂载目录

为了防止容器数据丢失,因此我们需将mysql关键路径挂载出来。

mkdir -p /app/mysql8.0/data
mkdir -p /app/mysql8.0/conf
mkdir -p /app/mysql8.0/mysql-files

创建zabbix网络

创建zabbix内部通信网络

docker network create -d bridge zabbix_net

构建mysql容器

docker run -dit -p 3306:3306 --name mysql8.0.26 --restart=always  -v /app/mysql8.0/log:/var/log/mysql:rw -v /app/mysql8.0/conf:/etc/mysql -v /app/mysql8.0/data:/var/lib/mysql:rw  -v /app/mysql8.0/mysql-files:/var/lib/mysql-files -v /etc/localtime:/etc/localtime -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="zabbix123"  mysql:8.0.26 --character-set-server=utf8 --collation-server=utf8_bin

这里发现一个问题,在启动完mysql8.0容器后,进入容器内部,发现有时候并没有我们定义的MYSQL_DATABASE,MYSQL_USER,MYSQL_PASSWORD等关于zabbix的库,如果发现这里的配置没有生效,请根据以下内容手动进行创建

[root@test ~]# docker exec -it mysql8.0.26 bash
root@e631872d16af:/# mysql -uroot -p
Enter password:   #这里直接回车,默认无密码
#设置root用户密码及权限
mysql> use mysql;
mysql> update user set authentication_string='' where user='root';
mysql> update user set host = '%' where user = 'root';
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'zabbix123';

#创建一个utf8编码格式的zabbix库
mysql> create database zabbix character set utf8 collate utf8_bin; 
 
 #创建账户并且授权设置密码
 #给来自loclhost的用户zabbxi分配可对数据库zabbix所有表进行所有操作的权限,并且设定密码为zabbix123

mysql> create user 'zabbix'@'%' identified by 'zabbix123';
mysql> GRANT ALL PRIVILEGES ON zabbix.* TO "zabbix"@"%";
#刷新权限
mysql> flush privileges;

构建zabbix-java-gateway容器

docker run -v /etc/localtime:/etc/localtime -dit --restart=always --name=zabbix-java-gateway --network zabbix_net zabbix/zabbix-java-gateway:latest

构建zabbix-server容器

首先先创建zabbix-server需要的卷

docker volume create zabbix-server-vol

构建容器
切记改DB_SERVER_HOST="192.168.120.178"为自己实际的地址,注意mysql用户名与密码正确,不然会无法导入数据库

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 --restart=always --network zabbix_net -e DB_SERVER_HOST="192.168.120.178" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="zabbix123" -e ZBX_JAVAGATEWAY="zabbix-java-gateway" zabbix/zabbix-server-mysql:centos-latest

构建zabbix-web容器

docker run -dit -p 8080:8080 -v /etc/localtime:/etc/localtime --name zabbix-web --restart=always --network zabbix_net -e DB_SERVER_HOST="192.168.120.178" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="zabbix123" -e ZBX_SERVER_HOST="zabbix-server-mysql" zabbix/zabbix-web-nginx-mysql:latest

访问测试

浏览器访问http://192.168.120.178:8080/,出现zabbix页面即为正常,输入账号admin,密码zabbix即可进行登录。
在这里插入图片描述
在这里插入图片描述

解决图表乱码问题

docker部署zabbix-web和源码安装zabbix-web一样
字体都是存储在/usr/share/zabbix/assets/fonts/
我们找到windows的字体,替换一下即可。

#使用root登录到容器内部
sudo docker exec -it -u root zabbix-web bash
cd /usr/share/zabbix/assets/fonts
rm -f DejaVuSans.ttf
exit
#将本地的文件cp上去(建议使用一样的名字,减少操作)
docker cp DejaVuSans.ttf zabbix-web:/usr/share/zabbix/assets/fonts

然后再刷新页面,显示正常在这里插入图片描述
码字不易,请大家点赞评论收藏三连支持一波,万分感谢!!!

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早九晚十二

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值