生產環境中一直用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