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


    请添加图片描述

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

    什么是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
    

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

  • 相关阅读:
    Spring GA、PRE、SNAPSHOT 版本含义及区别
    Linux实现查看文件内容的5种方式
    鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统项目背景
    Python学习:lambda,sort,filter,map,递归函数的运用
    盲人出行挑战与曙光:“盲人视觉辅助技术研发”助力无障碍生活
    一文读懂 C++ 并发与多线程 独家原创
    三维模型3DTile格式轻量化的跨平台兼容性问题分析
    关于#python#的问题:flask怎么在接口发送响应后紧跟着触发目标函数啊
    Android ADB常用命令
    python爬虫练习18:爬虫抓取视频思路2
  • 原文地址:https://blog.csdn.net/tootsy_you/article/details/127124473