Docker安装Zabbix5.2
生产环境中一直用3.4和4.0版本的zabbix在进行监控服务器和网络设备状态。最近想体验一下新版本,以前都是用二进制进行安装,一安装就要好几个小时甚至更久,毕竟有好些坑要踩。这次采用Docker的方式进行部署,真是应了那句话"我X,真香!早应该用这种方式部署了"。
0、安装Docker基础环境:
官方源比较慢,改用国内镜像源:
阿里云
$ sudo yum-config-manager --add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
或:清华大学源
$ sudo yum-config-manager --add-repo \
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
systemctl start docker
systemctl enable docker
1、拉取镜像
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
docker pull zabbix/zabbix-agent:latest
不要下载最新版本的mysql,不然后面server 无法在mysql上进行注册,会报 “MySQL server is not available. ” 错误
2、配置网络(docker的网桥)
docker network create --subnet 172.18.0.0/16 -d bridge zabbix_net
3、安装mysql
docker run -p 3306:3306 --name zabbix-mysql \
--network zabbix_net --ip 172.18.0.2 \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-v /etc/localtime:/etc/localtime \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="123456" \
-e MYSQL_ROOT_PASSWORD="123456" \
--restart=always \
-d mysql:5.7 \
--character-set-server=utf8 --collation-server=utf8_bin
#注:--restart=always写在-d mysql:5.7的前面,要不然容器启动后自动关闭。
--restart=always跟随Docker启动
4、安装java-gateway
docker run -v /etc/localtime:/etc/localtime -dit --restart=always --name zabbix-java-gateway --network zabbix_net --ip 172.18.0.5 zabbix/zabbix-java-gateway:latest
5、安装zabbix-server-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-mysql --restart=always --network zabbix_net --ip 172.18.0.6 \
-e DB_SERVER_HOST="zabbix-mysql" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="123456" \
-e MYSQL_ROOT_PASSWORD="123456" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" zabbix/zabbix-server-mysql:centos-latest
6、安装zabbix-nginx
docker run -dit -p 8888:8080 -v /etc/localtime:/etc/localtime \
--name zabbix-nginx \
--restart=always --network zabbix_net --ip 172.18.0.3 \
-e DB_SERVER_HOST="zabbix-mysql" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="123456" \
-e MYSQL_ROOT_PASSWORD="123456" \
-e PHP_TZ="Asia/Shanghai" \
-e ZBX_SERVER_HOST="zabbix-server-mysql" zabbix/zabbix-web-nginx-mysql:latest
7、部署zabbix-agent端(指定zabbix-server地址或者ip地址)
docker run -dit --name zabbix-agent -e ZBX_HOSTNAME="zabbix-server-mysql" --restart=always --link zabbix-server-mysql --network zabbix_net --ip 172.18.0.4 -e ZBX_SERVER_HOST="zabbix-server-mysql" -p 10050:10050 --privileged -e ZBX_SERVER_PORT=10051 -d zabbix/zabbix-agent:latest
8、登陆zabbix web
用户:Admin 密码: zabbix
相关问题
问题1:中文乱码问题解决
docker部署zabbix-web和源码安装zabbix-web一样,字体都是存储在/usr/share/zabbix/assets/fonts/
从windown拷贝MSYH.TTC(微软雅黑 )文件到docker的zabbix-web里面
1、字体存在于Windows的路径
C:\Windows\Fonts\MSYH.TTC 微软雅黑
2、上传字体到服务器/data下面
3、拷贝字体到docker 容器内部
# docker cp /data/MSYH.TTC 36:/usr/share/zabbix/assets/fonts/
4、进入容器
#docker exec -it zabbix-nginx bash
5、备份以前的字体文件
cd /usr/share/zabbix/assets/fonts/
# mv DejaVuSans.ttf DejaVuSans.ttf_bak
报错:
bash-5.0$ mv DejaVuSans.ttf DejaVuSans.ttfbak
mv: can't rename 'DejaVuSans.ttf': Permission denied
解决方法:
docker exec -it -u root zabbix-nginx /bin/bash
6、创建链接
ln -s MSYH.TTC DejaVuSans.ttf
另一种方法,一键替代法
用微软雅黑字体替代DejaVuSans字体
[root@localhost fonts]# \cp /data/MSYH.TTC `docker inspect zabbix-nginx | grep MergedDir |awk -F '"' '{print $4}'`/usr/share/zabbix/assets/fonts/DejaVuSans.ttf
问题2:监控Zabbix Server
错误现象 Zabbix agent is not available (for 3m)
Get value from agent failed: cannot connect to [[127.0.0.1]:10050]: [111] Connection refused
默认安装好Zabbix之后自带一个监视本地系统的配置“Zabbix Server”,无法被检测到。
主要原因就是我们是将Zabbix服务器和Zabbix客户端都安装到了Docker上
解决方法:
打开配置-主机,接口那的ip为127.0.0.1,这个IP是宿主机的IP,需要修改为 zabbix-agent 容器的IP