天天看點

【記錄】Zabbix安裝及簡單使用(二)

需要說明的是,此記錄僅是本人安裝過程的情況,每個人的安裝環境不一,過程中可能還需要安裝其它的依賴情況,這裡說不盡也道不完,還需各位根據情況進行排錯。

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安裝及簡單使用(二)

下拉

【記錄】Zabbix安裝及簡單使用(二)

下載下傳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端部署

  1. 啟動鏡像
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 從容器安裝

【記錄】Zabbix安裝及簡單使用(二)

挂載點也是有限制的

【記錄】Zabbix安裝及簡單使用(二)

檢視容器運作情況

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的配置檔案相應修改即可通路。

  1. 存在的一些坑

    坑一:

    原本的本地上用docker部署5.0版本的時候一切都十分順利,隻要把容器正常啟動就可以正常工作,但是部署了4.0後發現ICMP的監控模版不能使用,在web上看報了錯

    【記錄】Zabbix安裝及簡單使用(二)
    server容器上日志
    【記錄】Zabbix安裝及簡單使用(二)
    補充一句,因為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就可以推送中文了

繼續閱讀