溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Zabbix-Network-Weathermap的安裝和調(diào)試

發(fā)布時(shí)間:2020-05-28 16:50:44 來源:億速云 閱讀:1102 作者:鴿子 欄目:系統(tǒng)運(yùn)維

Zabbix-Network-Weathermap 安裝

可以安裝在新的主機(jī)上,只要能調(diào)用 Zabbix API 就可以了。要利用已有的主機(jī),可以和Web裝在一起,這樣要獲取數(shù)據(jù)就是找本地的Web調(diào)用Zabbix API。

安裝步驟

和項(xiàng)目里的步驟有一點(diǎn)不一樣,調(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

# 下載項(xiàng)目到本地,也可以用 git 克隆項(xiàng)目到本地
$ 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    

# 文件夾改名和授權(quán)
$ 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以外的部署方式。

agent 端的安裝

這里的步驟接著上面的步驟繼續(xù)。不過agent不是必須的,這里接下去的步驟可以先不做。  
可以用crontab替代agent,而且可能效果更好。目的就是一個(gè),定時(shí)調(diào)用項(xiàng)目的python腳本向zabbix請求數(shù)據(jù),繪制圖片,然后再更新拓?fù)鋱D使用的背景圖。  
crontab就能定時(shí)執(zhí)行腳本。agent的監(jiān)控項(xiàng)也可以設(shè)定輪詢時(shí)間執(zhí)行腳本。  
如果要用agent定時(shí)執(zhí)行腳本就接著做:

# 將項(xiàng)目里的 agent 配置文件復(fù)制到 agent 配置目錄
$ cp /opt/Zabbix-Network-Weathermap/template/userparameter_weathermap.conf /etc/zabbix/zabbix_agentd.d/    

# 需要重啟 agent 才能加載新的配置生效
$ systemctl restart zabbix-agent    

# 把模板配置文件下載到自己用的電腦上,之后要通過web上傳這個(gè)模板
$ yum install lrzsz
$ sz /opt/Zabbix-Network-Weathermap/template/weathermap.xml

瀏覽器上的設(shè)置

這步也是為agent做的,如果不用agent的監(jiān)控項(xiàng)輪詢執(zhí)行腳本,就不需要。

導(dǎo)入模板  
把下載的模板文件上傳到zabbix:配置 -> 模板 -> 導(dǎo)入。然后選擇要導(dǎo)入的文件,用默認(rèn)的規(guī)則上傳即可。

agent 主機(jī)綁定模板  
配置 -> 主機(jī),選擇agent主機(jī),到模板分頁,選擇剛上傳的模板 “Template Weathermap” 更新,就完成了綁定。

創(chuàng)建Zabbix用戶
執(zhí)行腳本,通過API請求數(shù)據(jù),更新背景圖,需要使用某個(gè)用戶來驗(yàn)證。

Create new user with permissions Zabbix Admin
User must have read-only or read-write access to hosts and hosts groups present in map

實(shí)驗(yàn)直接用了管理員賬號,具體要多大的權(quán)限未仔細(xì)驗(yàn)證。

設(shè)置模板的宏
配置 -> 模板 -> Template Weathermap -> 宏:
這里預(yù)設(shè)了4個(gè)宏,宏的值需要修改一下。宏的值就是執(zhí)行腳本的命令行參數(shù)。  
比如實(shí)際要執(zhí)行的腳本是:

$ ./opt/Zabbix-Network-Weathermap/starter.py -s mapname1 mapname2 -z http://localhost/zabbix/ -l Admin -p zabbix

那么就在宏的值里填上后面參數(shù)的部分。  
具體要怎么填,每個(gè)宏都是什么用處,后面手動調(diào)試再講。  
這里把 Template Weathermap 的4個(gè)監(jiān)控項(xiàng)先禁用,等手動調(diào)試過了,再來完成設(shè)置,然后啟用。

完成安裝

至此,安裝初步完成。
接下來是使用和調(diào)試。調(diào)試的過程可以在服務(wù)器通過命令行手動執(zhí)行腳本。所以是不需要agent的。

調(diào)試

項(xiàng)目下有兩個(gè)可執(zhí)行的python腳本:

  • weathermap.py
  • starter.py

主要功能就是 weathermap.py ,而 starter.py 也是調(diào)用 weathermap.py 。差別是通過 starter.py 執(zhí)行,最后會打印腳本執(zhí)行的時(shí)間。

執(zhí)行腳本需要帶參數(shù),參數(shù)的含義可以通過 -h 選項(xiàng)查看。一共也就下面4個(gè)命令完成不同的功能:

$ 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 

選項(xiàng) -s 和 -m 后面是可以更多個(gè)參數(shù)的,對應(yīng)的就是你有幾張拓?fù)鋱D需要使用 weathermap 。

創(chuàng)建拓?fù)鋱D

先在Web上創(chuàng)建一個(gè)拓?fù)鋱D,需要有節(jié)點(diǎn),有連線。  
原始拓?fù)鋱D:
Zabbix-Network-Weathermap的安裝和調(diào)試

連線的美化  
這個(gè)要等到全部效果出來了,才能看出效果??梢缘鹊叫Ч鰜砹?,再來根據(jù)建議做調(diào)整。
連線的類型有4種,建議選擇虛線:

  • 粗線
  • 點(diǎn)
  • 虛線

連線的顏色也可以設(shè)置,試試淡一點(diǎn)的顏色,或者和背景相近的顏色。

Weathermap 調(diào)試

先去看一下項(xiàng)目目錄 /opt/Zabbix-Network-Weathermap/mapcfgs ,里面一開始是空的,或者是有幾個(gè)示例文件。

根據(jù)拓?fù)鋱D生成對應(yīng)的weather使用的yaml配置文件  
在weathermap項(xiàng)目中,生成拓?fù)鋱D的yaml配置文件。  
執(zhí)行下面的命令:

$ weathermap.py -s mapname1 -z http://localhost/zabbix -l Admin -p zabbix

-s mapname1,是對應(yīng)的zabbix中拓?fù)鋱D的命令。  
-z 填寫zabbix的首頁的url。  
-l, -p,就是賬號的用戶名和密碼。

如果執(zhí)行成功,就會生成一個(gè)對應(yīng)名字的yaml配置文件。

編輯配置文件
找到配置中的 link- 的那些配置項(xiàng)

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"]

部分選項(xiàng)默認(rèn)是空著的,需要手動填上。最基本的要填3項(xiàng):

  • hostname: 需要采集數(shù)據(jù)的“主機(jī)名稱”。如果有定義了“可見的名稱”,則填后者。
  • itemin: 填寫監(jiān)控項(xiàng)的 key,就是請求獲取數(shù)據(jù)。
  • itemout: 同上。

還有其他的配置可以加上或修改,稍后再改。

生成背景圖  
改好配置文件后,執(zhí)行下面的腳本獲取數(shù)據(jù),生成背景圖:

$ weathermap.py -m mapname1.yaml -i ~/

命令執(zhí)行后,會在家目錄下生成一張png的背景圖:
Zabbix-Network-Weathermap的安裝和調(diào)試

上傳背景圖  
上面可能是老版本的做法,現(xiàn)在可以直接將背景圖傳給zabbix直接用。執(zhí)行如下命令:

$ weathermap.py -m mapname1.yaml -u

加上 -u 選擇就是直接上傳到zabbix了。  
此時(shí)可以去web端,在拓?fù)鋱D的屬性里“背景圖片”,將生成的背景圖應(yīng)用上:
Zabbix-Network-Weathermap的安裝和調(diào)試

更新圖片元素  
根據(jù)圖片效果,可以發(fā)現(xiàn)生成的線條是根據(jù)節(jié)點(diǎn)的位置生成的。如果拓?fù)鋱D被編輯過了,比如節(jié)點(diǎn)的位置發(fā)生變化,或者有添加新的節(jié)點(diǎn),那么yaml文件的配置就需要調(diào)整??梢詧?zhí)行如下命令更新拓?fù)鋱D上的設(shè)置:

$ weathermap.py -s mapname1 -f

小結(jié)  
至此,4個(gè)腳本都已經(jīng)用過了,效果也清除了。

  • 生成配置文件,只需要在創(chuàng)建新拓?fù)鋱D,需要修改yaml配置文件前手動執(zhí)行一次即可
  • 生成背景圖,需要自動執(zhí)行,并且要刷新數(shù)據(jù)。執(zhí)行的頻率會比較高,比如1分鐘1次
  • 上傳背景圖,這個(gè)用不到。完全不需要
  • 更新圖片元素,這個(gè)需要在更新圖片后執(zhí)行一次。也需要設(shè)為自動,但是頻率不用很高,比如1小時(shí)1次

檢查agent監(jiān)控項(xiàng)的狀態(tài)

如果使用agent方式來定時(shí)執(zhí)行腳本,部署完成后,去檢查一下監(jiān)控項(xiàng)的狀態(tài)。  
配置 -> 主機(jī) -> 選擇主機(jī)的監(jiān)控項(xiàng) -> 查看“Weathermap”應(yīng)用集的監(jiān)控項(xiàng),主要查看后面的狀態(tài)和信息。  
如果宏的值設(shè)置有問題,信息里記錄的一般是python拋出的異常。此時(shí),應(yīng)該登錄到服務(wù)器手動方式執(zhí)行腳本進(jìn)行檢查和排錯(cuò)。  
如果腳本運(yùn)行參數(shù)沒有問題,很可能會有執(zhí)行超時(shí)的問題:
Zabbix-Network-Weathermap的安裝和調(diào)試

agent 執(zhí)行超時(shí)問題

項(xiàng)目中的說明如下:

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會有超時(shí)的限制,默認(rèn)是3秒鐘。正常執(zhí)行一次腳本,如果一張拓?fù)鋱D的話,可能剛好夠。如果一次要好幾張拓?fù)鋱D的話,就很可能會超時(shí)了??梢栽诿钚猩鲜褂?starter.py 來運(yùn)行腳本查看運(yùn)行時(shí)間。不過通過agent觸發(fā)的執(zhí)行可能效率會更差,耗時(shí)會再多一點(diǎn)。
解決方式如下:

  • 把a(bǔ)gent的超時(shí)時(shí)間調(diào)大一點(diǎn),比如10秒
  • 一次只操作一張拓?fù)鋱D,多張拓?fù)鋱D的話,就要設(shè)置多個(gè)監(jiān)控項(xiàng)
  • 改用crontab來定時(shí)執(zhí)行腳本

使用agent,輪詢的時(shí)候?qū)嶋H調(diào)用的是starter.py

字體太小

不只是字體大?。╢ontsize),還有背景色(bgcolor)。這兩個(gè)是map下的參數(shù)。  
在執(zhí)行 -s 選項(xiàng)的命令后,yaml配置文件里的設(shè)置會被默認(rèn)值覆蓋掉。字體大小默認(rèn)是10,背景色默認(rèn)為空。  
所以就算設(shè)置好了這2項(xiàng),生成了復(fù)合要求的背景圖。但是在下次執(zhí)行 -s 選項(xiàng)的命令,比如更新圖片元素后,配置文件里的設(shè)置又會被改回默認(rèn)值。在之后生成的圖片又會變回默認(rèn)的效果。

源碼修改

這個(gè)問題可以通過修改源碼來解決,添加下面這段:
Zabbix-Network-Weathermap的安裝和調(diào)試

項(xiàng)目最近的一次修改是: 12 Oct 2018。有問題可能只能自己來解決了。

yaml配置參數(shù)

全局設(shè)置  
配置文件的開頭的部分:

%YAML 1.2
---
map:
  name: mapname1
  bgcolor: ''       # 設(shè)置背景色, 默認(rèn)為空
  fontsize: 10      # 設(shè)置字體大小,默認(rèn)10太小了點(diǎn)
  width: 1200
  height: 800
zabbix:
  url: http://zabbix.example.com
  login: admin
  password: admin
table:              # 生成一個(gè)圖例,顯示時(shí)間以及箭頭顏色含義
  show: true        # 默認(rèn)是false,可以改為true開啟
  x: 1100
  y: 100
palette:            # 每個(gè)顏色表示一段使用率,默認(rèn)的色彩就很不錯(cuò)
- '#908C8C'
- '#FFFFFF'
- '#8000FF'
- '#0000FF'
- '#00EAEA'
- '#00FF00'
- '#FFFF00'
- '#FF9933'
- '#FF0000'
link:               # 默認(rèn)的線條設(shè)置,每條link還能單獨(dú)配置
  bandwidth: 100    # 線路的帶寬,影響顯示的顏色,單位 Mbits/s
  width: 10         # 線的粗細(xì),默認(rèn)值也可以?;蛟S可以根據(jù)帶寬設(shè)置不同的粗細(xì)

節(jié)點(diǎn)和線的設(shè)置

node-11:
  name: Router
  #label: R1                   # 舊版本使用,如果設(shè)置了,可以把標(biāo)簽畫出來
  #icon: Router64.png          # 舊版本使用,如果設(shè)置了,可以把節(jié)點(diǎn)圖標(biāo)畫出來
  x: 125
  y: 75
  #copy: true                  # 如果設(shè)置,即使拓?fù)淅餂]這個(gè)元素,也會畫出來
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               # 可以覆蓋默認(rèn)的link里的設(shè)置
  #width: 5
  #copy: true                  # 如果設(shè)置,即使拓?fù)淅餂]這個(gè)元素,也會畫出來
  hostname: Router             # 設(shè)置監(jiān)控項(xiàng)采集的節(jié)點(diǎn)
  itemin: net.if.in["eth0"]    # 設(shè)置監(jiān)控項(xiàng)的key
  itemout: net.if.out["eth0"]  # 設(shè)置監(jiān)控項(xiàng)的key

這里有兩個(gè)舊版本使用的參數(shù)label和icon。畫圖的時(shí)候可以把節(jié)點(diǎn)也畫上去。  
之前生成的背景圖是沒有節(jié)點(diǎn)信息的,節(jié)點(diǎn)信息是作為拓?fù)鋱D的元素直接顯示出來,不需要畫在背景上。  
在使用 -i 參數(shù)生成圖片的時(shí)候,加上這些設(shè)置就能把節(jié)點(diǎn)也畫上去了。這個(gè)是就版本的實(shí)現(xiàn)方法,那時(shí)候可能無法應(yīng)用拓?fù)涞谋尘皥D來實(shí)現(xiàn)。

儀表盤效果

要讓拓?fù)渖系臄?shù)據(jù)實(shí)時(shí)刷新,就要自動刷新拓?fù)鋱D。配置在首頁的儀表盤上
Zabbix-Network-Weathermap的安裝和調(diào)試

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI