需要說明的是,此記錄僅是本人安裝過程的情況,每個人的安裝環境不一,過程中可能還需要安裝其它的依賴情況,這裡說不盡也道不完,還需各位根據情況進行排錯。
Zabbix4.0
為什麼要寫這個标題的原因,是因為我在部署到線上環境的時候,由于種種原因選擇了docker部署Zabbix4.0版本的。因為自己沒有好好閱讀官方的産品手冊,是以遇到了不少坑,是以也在這記錄下來,希望能幫助到一些後來的朋友。
docker鏡像用的是centos-4.0.26版本
拉取
docker pull zabbix/zabbix-server-mysql:centos-4.0.26
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
zabbix/zabbix-server-mysql centos-5.0-latest 45a52b35737c 8 days ago 345MB
擷取資料庫檔案和web源碼
在官網
下拉
下載下傳Zabbix源碼并解壓縮
wget https://cdn.zabbix.com/zabbix/sources/stable/4.0/zabbix-4.0.26.tar.gz
tar -xzvf zabbix-4.0.26.tar.gz
解壓後得到zabbix-4.0.26檔案夾
sql檔案在zabbix-4.0.26/database/mysql下,web檔案在zabbix-4.0.26/frontends/php下
建立資料庫并導入資料
mysql -uroot -p
mysql>create database zabbix character set utf8 collate utf-bin;
mysql>grant all privileges on zabbix.* to 'zabbix'@'%' identified by 'zabbix';
mysql>flush privileges;
mysql>use zabbix;
mysql>source <yourpath>/zabbix-4.0.26/database/mysql/schema.sql;
mysql>source <yourpath>/zabbix-4.0.26/database/mysql/images.sql;
mysql>source <yourpath>/zabbix-4.0.26/database/mysql/data.sql;
mysql>quit;
必須按照schema.sql>images.sql>data.sql導入資料,否則報錯。
把web源碼拷貝到站點檔案夾,參考前一篇文章【記錄】Zabbix安裝及簡單使用(一)
需注意的是配置檔案在站點根目錄/conf/zabbix.conf.php。
server端部署
- 啟動鏡像
docker run -d -t \
--name zabbix-server
--hostname zabbix-server
-e DB_SERVER_HOST="your database host" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_DATABASE="zabbix" \
-v /home/zabbix/zabbix_server.conf:/etc/zabbix/zabbix_server.conf \
-v /home/zabbix/logs:/tmp/logs \
-v /home/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \
-v /home/zabbix/externalscripts:/usr/lib/zabbix/externalscripts \
-p 10051:10051 \
zabbix/zabbix-server-mysql:centos-4.0.26
-d:背景運作容器
-t:給容器配置設定一個終端
-e:設定容器的環境變量
-v:挂載檔案夾
-p:端口映射 主控端端口:容器端口
–name:設定容器名稱
–hostname:設定容器的主機名
這幾個資料庫的環境變量是必須設定的,否則容器起不來。zabbix-server docker會根據這幾個環境變量寫入配置檔案的資料庫配置,至于還能傳入其它的環境變量,大家可以看看官方手冊:Zabbix Documentation 4.0 從容器安裝
挂載點也是有限制的
檢視容器運作情況
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f53c6cd87c67 zabbix/zabbix-server-mysql:centos-4.0.26 "/sbin/tini -- /usr/…" 46 hours ago Up 38 hours 0.0.0.0:10051->10051/tcp zabbix-server
檢視容器IP
docker inspect zabbix-server
把web的配置檔案相應修改即可通路。
-
存在的一些坑
坑一:
原本的本地上用docker部署5.0版本的時候一切都十分順利,隻要把容器正常啟動就可以正常工作,但是部署了4.0後發現ICMP的監控模版不能使用,在web上看報了錯
server容器上日志 補充一句,因為zabbix容器的日志類型是不能修改的,即配置檔案裡的LogType,預設就是console,要檢視日志使用指令
dokcer logs zabbix-server -f
這是因為fping的執行權限問題,按照網上的解決步驟是:
docker exec -it zabbix-server bash
chown -R root:root /usr/sbin/fping
chmod 4710 /usr/sbin/fping
chown -R root:root /usr/sbin/fping6
chmod 4710 /usr/sbin/fping6
修改/etc/passwd,允許zabbix使用shell登入,測試fping
vim /etc/passwd
zabbix:x:997:994:Zabbix Monitoring System:/var/lib/zabbix:/bin/bash
su zabbix
fping baidu.com
baidu.com is alive
好的,可以執行說明權限沒問題,然而報錯并沒有消失。
這個問題困擾了我好幾天,問了好多人也沒發現什麼問題。
經過不斷的docker stop rm run 之後,還是沒有找出問題所在。
就在我快要頂不住了要吐了的時候,一道閃電劃過我的腦袋瓜子,我的手不受控制地敲下兩行指令
mv /usr/sbin/fping6 /usr/sbin/fping6.bk
ln -s /usr/sbin/fping /usr/sbin/fping6
wrlg,兩分鐘過後,告警消失了!我又添加了幾個測試主機使用ICMP監控,發現已經可以正常使用。
至今我仍然不明白,難道4.0版本預設使用ipv6?因為我是務實的,是以并沒有深究下去,如果有大神可以告知一二那就甚好。
坑二:
容器裡沒有中文環境,是得郵件推送是中文内容亂碼而且以bin結尾的附件發送。
需要執行以下指令生成中文環境:
localedef -f UTF-8 -i zh_CN zh_CN.UTF-8
locale -a
C
POSIX
en_US.utf8
zh_CN.utf8
看到有zh_CN.utf8就可以推送中文了