十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
Zabbix-Network-Weathermap 安裝
成都創(chuàng)新互聯(lián)公司是創(chuàng)新、創(chuàng)意、研發(fā)型一體的綜合型網(wǎng)站建設公司,自成立以來公司不斷探索創(chuàng)新,始終堅持為客戶提供滿意周到的服務,在本地打下了良好的口碑,在過去的十載時間我們累計服務了上千家以及全國政企客戶,如衛(wèi)生間隔斷等企業(yè)單位,完善的項目管理流程,嚴格把控項目進度與質(zhì)量監(jiān)控加上過硬的技術實力獲得客戶的一致贊揚。
可以安裝在新的主機上,只要能調(diào)用 Zabbix API 就可以了。要利用已有的主機,可以和Web裝在一起,這樣要獲取數(shù)據(jù)就是找本地的Web調(diào)用Zabbix API。
和項目里的步驟有一點不一樣,調(diào)整了一下。先安裝好python環(huán)境,然后其他依賴都通過pip來安裝:
# 安裝python3環(huán)境 $ yum install python3 # 更新 pip $ easy_install-3.6 -i https://mirrors.aliyun.com/pypi/simple -U pip $ pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ # 通過 pip 安裝其他依賴組件 $ pip install Pillow $ pip install py-zabbix $ pip install ruamel.yaml==0.14.12 # 下載項目到本地,也可以用 git 克隆項目到本地 $ wget --output-document=Zabbix-Network-Weathermap.zip https://github.com/Prototype-X/Zabbix-Network-Weathermap/archive/master.zip # 解壓,用git的話就不用解壓了 $ yum install unnzip $ unzip Zabbix-Network-Weathermap.zip -d /opt # 文件夾改名和授權 $ mv /opt/Zabbix-Network-Weathermap{-master,} $ chown -R zabbix:zabbix /opt/Zabbix-Network-Weathermap $ chmod a+x /opt/Zabbix-Network-Weathermap/starter.py $ chmod a+x /opt/Zabbix-Network-Weathermap/weathermap.py
安裝到此告一段落,后面agent的部分可以先不用裝,最終可能也不需要裝,有agent以外的部署方式。
這里的步驟接著上面的步驟繼續(xù)。不過agent不是必須的,這里接下去的步驟可以先不做。
可以用crontab替代agent,而且可能效果更好。目的就是一個,定時調(diào)用項目的python腳本向zabbix請求數(shù)據(jù),繪制圖片,然后再更新拓撲圖使用的背景圖。
crontab就能定時執(zhí)行腳本。agent的監(jiān)控項也可以設定輪詢時間執(zhí)行腳本。
如果要用agent定時執(zhí)行腳本就接著做:
# 將項目里的 agent 配置文件復制到 agent 配置目錄 $ cp /opt/Zabbix-Network-Weathermap/template/userparameter_weathermap.conf /etc/zabbix/zabbix_agentd.d/ # 需要重啟 agent 才能加載新的配置生效 $ systemctl restart zabbix-agent # 把模板配置文件下載到自己用的電腦上,之后要通過web上傳這個模板 $ yum install lrzsz $ sz /opt/Zabbix-Network-Weathermap/template/weathermap.xml
這步也是為agent做的,如果不用agent的監(jiān)控項輪詢執(zhí)行腳本,就不需要。
導入模板
把下載的模板文件上傳到zabbix:配置 -> 模板 -> 導入。然后選擇要導入的文件,用默認的規(guī)則上傳即可。
agent 主機綁定模板
配置 -> 主機,選擇agent主機,到模板分頁,選擇剛上傳的模板 “Template Weathermap” 更新,就完成了綁定。
創(chuàng)建Zabbix用戶
執(zhí)行腳本,通過API請求數(shù)據(jù),更新背景圖,需要使用某個用戶來驗證。
Create new user with permissions Zabbix Admin
User must have read-only or read-write access to hosts and hosts groups present in map
實驗直接用了管理員賬號,具體要多大的權限未仔細驗證。
設置模板的宏
配置 -> 模板 -> Template Weathermap -> 宏:
這里預設了4個宏,宏的值需要修改一下。宏的值就是執(zhí)行腳本的命令行參數(shù)。
比如實際要執(zhí)行的腳本是:
$ ./opt/Zabbix-Network-Weathermap/starter.py -s mapname1 mapname2 -z http://localhost/zabbix/ -l Admin -p zabbix
那么就在宏的值里填上后面參數(shù)的部分。
具體要怎么填,每個宏都是什么用處,后面手動調(diào)試再講。
這里把 Template Weathermap 的4個監(jiān)控項先禁用,等手動調(diào)試過了,再來完成設置,然后啟用。
至此,安裝初步完成。
接下來是使用和調(diào)試。調(diào)試的過程可以在服務器通過命令行手動執(zhí)行腳本。所以是不需要agent的。
項目下有兩個可執(zhí)行的python腳本:
主要功能就是 weathermap.py ,而 starter.py 也是調(diào)用 weathermap.py 。差別是通過 starter.py 執(zhí)行,最后會打印腳本執(zhí)行的時間。
執(zhí)行腳本需要帶參數(shù),參數(shù)的含義可以通過 -h 選項查看。一共也就下面4個命令完成不同的功能:
$ weathermap.py -s mapname1 mapnameN -z http://localhost/zabbix -l Admin -p zabbix $ weathermap.py -s mapname1 mapnameN -f $ weathermap.py -m mapname1.yaml mapnameN.yaml -i /var/www/weather $ weathermap.py -m mapname1.yaml -u
選項 -s 和 -m 后面是可以更多個參數(shù)的,對應的就是你有幾張拓撲圖需要使用 weathermap 。
先在Web上創(chuàng)建一個拓撲圖,需要有節(jié)點,有連線。
原始拓撲圖:
連線的美化
這個要等到全部效果出來了,才能看出效果。可以等到效果出來了,再來根據(jù)建議做調(diào)整。
連線的類型有4種,建議選擇虛線:
連線的顏色也可以設置,試試淡一點的顏色,或者和背景相近的顏色。
先去看一下項目目錄 /opt/Zabbix-Network-Weathermap/mapcfgs ,里面一開始是空的,或者是有幾個示例文件。
根據(jù)拓撲圖生成對應的weather使用的yaml配置文件
在weathermap項目中,生成拓撲圖的yaml配置文件。
執(zhí)行下面的命令:
$ weathermap.py -s mapname1 -z http://localhost/zabbix -l Admin -p zabbix
-s mapname1,是對應的zabbix中拓撲圖的命令。
-z 填寫zabbix的首頁的url。
-l, -p,就是賬號的用戶名和密碼。
如果執(zhí)行成功,就會生成一個對應名字的yaml配置文件。
編輯配置文件
找到配置中的 link- 的那些配置項
link-10: node1: node-12 node2: node-15 name1: web name2: Router_symbol_(96) hostname: web itemin: net.if.in["eth0"] itemout: net.if.out["eth0"]
部分選項默認是空著的,需要手動填上。最基本的要填3項:
還有其他的配置可以加上或修改,稍后再改。
生成背景圖
改好配置文件后,執(zhí)行下面的腳本獲取數(shù)據(jù),生成背景圖:
$ weathermap.py -m mapname1.yaml -i ~/
命令執(zhí)行后,會在家目錄下生成一張png的背景圖:
上傳背景圖
上面可能是老版本的做法,現(xiàn)在可以直接將背景圖傳給zabbix直接用。執(zhí)行如下命令:
$ weathermap.py -m mapname1.yaml -u
加上 -u 選擇就是直接上傳到zabbix了。
此時可以去web端,在拓撲圖的屬性里“背景圖片”,將生成的背景圖應用上:
更新圖片元素
根據(jù)圖片效果,可以發(fā)現(xiàn)生成的線條是根據(jù)節(jié)點的位置生成的。如果拓撲圖被編輯過了,比如節(jié)點的位置發(fā)生變化,或者有添加新的節(jié)點,那么yaml文件的配置就需要調(diào)整??梢詧?zhí)行如下命令更新拓撲圖上的設置:
$ weathermap.py -s mapname1 -f
小結
至此,4個腳本都已經(jīng)用過了,效果也清除了。
如果使用agent方式來定時執(zhí)行腳本,部署完成后,去檢查一下監(jiān)控項的狀態(tài)。
配置 -> 主機 -> 選擇主機的監(jiān)控項 -> 查看“Weathermap”應用集的監(jiān)控項,主要查看后面的狀態(tài)和信息。
如果宏的值設置有問題,信息里記錄的一般是python拋出的異常。此時,應該登錄到服務器手動方式執(zhí)行腳本進行檢查和排錯。
如果腳本運行參數(shù)沒有問題,很可能會有執(zhí)行超時的問題:
項目中的說明如下:
Zabbix API performance is low. Zabbix agent run weathermap.py. Weathermap.py can be terminated by timeout, set in zabbix_agentd.conf.
Decision:
- Increase the timeout for example: zabbix_agentd.conf set Timeout=10
- One item to one map in Template Weathermap
- Use cron to run the scripts
zabbix的agent會有超時的限制,默認是3秒鐘。正常執(zhí)行一次腳本,如果一張拓撲圖的話,可能剛好夠。如果一次要好幾張拓撲圖的話,就很可能會超時了。可以在命令行上使用 starter.py 來運行腳本查看運行時間。不過通過agent觸發(fā)的執(zhí)行可能效率會更差,耗時會再多一點。
解決方式如下:
使用agent,輪詢的時候?qū)嶋H調(diào)用的是starter.py
不只是字體大?。╢ontsize),還有背景色(bgcolor)。這兩個是map下的參數(shù)。
在執(zhí)行 -s 選項的命令后,yaml配置文件里的設置會被默認值覆蓋掉。字體大小默認是10,背景色默認為空。
所以就算設置好了這2項,生成了復合要求的背景圖。但是在下次執(zhí)行 -s 選項的命令,比如更新圖片元素后,配置文件里的設置又會被改回默認值。在之后生成的圖片又會變回默認的效果。
這個問題可以通過修改源碼來解決,添加下面這段:
項目最近的一次修改是: 12 Oct 2018。有問題可能只能自己來解決了。
全局設置
配置文件的開頭的部分:
%YAML 1.2 --- map: name: mapname1 bgcolor: '' # 設置背景色, 默認為空 fontsize: 10 # 設置字體大小,默認10太小了點 width: 1200 height: 800 zabbix: url: http://zabbix.example.com login: admin password: admin table: # 生成一個圖例,顯示時間以及箭頭顏色含義 show: true # 默認是false,可以改為true開啟 x: 1100 y: 100 palette: # 每個顏色表示一段使用率,默認的色彩就很不錯 - '#908C8C' - '#FFFFFF' - '#8000FF' - '#0000FF' - '#00EAEA' - '#00FF00' - '#FFFF00' - '#FF9933' - '#FF0000' link: # 默認的線條設置,每條link還能單獨配置 bandwidth: 100 # 線路的帶寬,影響顯示的顏色,單位 Mbits/s width: 10 # 線的粗細,默認值也可以?;蛟S可以根據(jù)帶寬設置不同的粗細
節(jié)點和線的設置
node-11: name: Router #label: R1 # 舊版本使用,如果設置了,可以把標簽畫出來 #icon: Router64.png # 舊版本使用,如果設置了,可以把節(jié)點圖標畫出來 x: 125 y: 75 #copy: true # 如果設置,即使拓撲里沒這個元素,也會畫出來 node-15: name: Router_symbol_(96) x: 375 y: 324 link-9: node1: node-11 node2: node-15 name1: Router # zabix上的可見名稱 name2: Router_symbol_(96) #bandwidth: 10 # 可以覆蓋默認的link里的設置 #width: 5 #copy: true # 如果設置,即使拓撲里沒這個元素,也會畫出來 hostname: Router # 設置監(jiān)控項采集的節(jié)點 itemin: net.if.in["eth0"] # 設置監(jiān)控項的key itemout: net.if.out["eth0"] # 設置監(jiān)控項的key
這里有兩個舊版本使用的參數(shù)label和icon。畫圖的時候可以把節(jié)點也畫上去。
之前生成的背景圖是沒有節(jié)點信息的,節(jié)點信息是作為拓撲圖的元素直接顯示出來,不需要畫在背景上。
在使用 -i 參數(shù)生成圖片的時候,加上這些設置就能把節(jié)點也畫上去了。這個是就版本的實現(xiàn)方法,那時候可能無法應用拓撲的背景圖來實現(xiàn)。
要讓拓撲上的數(shù)據(jù)實時刷新,就要自動刷新拓撲圖。配置在首頁的儀表盤上