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

http://宿主机IP:8888/

用户: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

 

posted @ 2021-02-27 22:49  ST运维  阅读(4950)  评论(2编辑  收藏  举报