一、准备工作
Zabbix中文文档:https://www.zabbix.com/documentation/5.0/zh/start Docker环境准备:https://www.starcto.com/docker/70.html
Zabbix相关镜像下载:
docker pull mysql:5.7
docker pull zabbix/zabbix-server-mysql:centos-latest
docker pull zabbix/zabbix-web-nginx-mysql:latest
docker pull zabbix/zabbix-java-gateway:latest
二、部署Zabbix
2.1 创建zabbix容器网络
[root@zabbix ~]# docker network create -d bridge zabbix_network
2.2 创建MySQL容器
[root@zabbix ~]# docker run -dit -p 3306:3306 --name zabbix-mysql \
--network zabbix_network --restart always \
-v /etc/localtime:/etc/localtime \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="ucloud.cn" \
-e MYSQL_ROOT_PASSWORD="ucloud.cn" \
mysql:5.7
参数解读:
MYSQL_DATABASE="zabbix" # MySQL创建zabbix库
MYSQL_USER="zabbix" # 设置zabbix的登录账户名
MYSQL_PASSWORD="ucloud.cn" # 设置zabbix的登录账户密码
MYSQL_ROOT_PASSWORD="ucloud.cn" # 设置MySQL数据库root密码
--network zabbix_network # 将容器加入到zabbix_network网络中
-v /etc/localtime:/etc/localtime # 同步服务器和容器内部的时区
--restart always # 设置自启动
-e MYSQL_DATABASE="zabbix" # 创建环境变量
--name zabbix-mysql # 给容器命名
2.3 创建zabbix-java-gateway容器
[root@zabbix ~]#docker run -v /etc/localtime:/etc/localtime -dit \
--restart=always \
--name=zabbix-java-gateway \
--network zabbix_network \
zabbix/zabbix-java-gateway:latest
2.4 创建zabbix-server-mysql容器
# 创建容器卷zabbix-server-volumes
[root@zabbix ~]# docker volume create zabbix-server-volumes
[root@zabbix ~]# docker run -dit -p 10051:10051 \
--mount source=zabbix-server-volumes,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_network \
-e DB_SERVER_HOST="zabbix-mysql" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="ucloud.cn" \
-e MYSQL_ROOT_PASSWORD="ucloud.cn" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
zabbix/zabbix-server-mysql:centos-latest
【注】上述数据库相关内容要与运行中的MySQL容器配置保持一致。
2.5 创建zabbix-web-nginx-mysql镜像
[root@zabbix ~]# docker run -dit -p 8080:8080 \
-v /etc/localtime:/etc/localtime \
--name zabbix-web-nginx-mysql \
--restart=always \
--network zabbix_network \
-e DB_SERVER_HOST="zabbix-mysql" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="ucloud.cn" \
-e MYSQL_ROOT_PASSWORD="ucloud.cn" \
-e ZBX_SERVER_HOST="zabbix-server-mysql" \
zabbix/zabbix-web-nginx-mysql:latest
# 查看运行中的容器
2.6 浏览器访问测试
http://10.27.0.224:8080/zabbix
三、Zabbix异常解决
3.1 Zabbix仪表板提示"Zabbix agent is not available (for 3m)"
默认安装好Zabbix之后会自带一个监视本地系统的配置“Zabbix Server”。前面Docker部署的容器默认没有安装zabbix-agent,自然无法链接到本机自己的代理。 解决的办法: (1)虚机上安装zabbix-agent。 (2)容器部署zabbix-agent。
# 安装zabbix软件源
[root@zabbix ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
# 安装zabbix-agent
[root@zabbix ~]# yum install zabbix-sender zabbix-agent zabbix-get -y
# 修改/etc/zabbix/zabbix_agentd.conf配置
[root@zabbix ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=172.19.0.4 # zabbix-server的IP
ServerActive=172.19.0.4 # zabbix-server的IP
【注】查看zabbix-server服务器IP地址:
# 启动zabbix-agent服务,并设置开机自启
[root@zabbix ~]# systemctl start zabbix-agent.service
[root@zabbix ~]# systemctl enable zabbix-agent.service
[root@zabbix ~]# docker exec -it zabbix-server-mysql bash
bash-4.4$ zabbix_get -s 172.19.0.1 -k system.cpu.num
【注】配置-主机-Zabbix server将agent代理程序的接口更改为“172.19.0.1”即可。
3.2 Zabbix绘制图形中文符乱码
# 安装中文字体
链接:https://pan.baidu.com/s/1X54ss0bTl8gxXP9txl-Y8A
提取码:nk7i
# 将解压的字体拷贝到容器中
[root@zabbix ~]# docker cp ~/Chinese.ttf zabbix-web-nginx-mysql:/usr/share/zabbix/assets/fonts/Chinese.ttf
# 进入容器,修改字体
[root@zabbix ~]# docker exec -it zabbix-web-nginx-mysql bash
[root@zabbix ~]# cp DejaVuSans.ttf DejaVuSans.ttf.bak
[root@zabbix ~]# mv Chinese.ttf DejaVuSans.ttf
3.3 Zabbix绘制图形的时间不正确
# 进入容器修改时区
[root@zabbix ~]# docker exec -it zabbix-web-nginx-mysql bash
bash-5.0$ vi /usr/share/zabbix/include/config.inc.php
date_default_timezone_set('Asia/Shanghai');
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。