大家好,我是早九晚十二,目前是做运维相关的工作。写博客是为了积累,希望大家一起进步!
我的主页:早九晚十二
什么是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
然后再刷新页面,显示正常
码字不易,请大家点赞评论收藏三连支持一波,万分感谢!!!