zabbix 3.4版本更新了許多新功能,其中一個(gè)監(jiān)控項(xiàng)功能Preprocessing,根據(jù)官方說明文檔,在監(jiān)控項(xiàng)收集的數(shù)據(jù)存儲到數(shù)據(jù)庫前,預(yù)先對數(shù)據(jù)進(jìn)行處理,使用效果超過預(yù)期。這個(gè)功能存放位置在創(chuàng)建item后多了一個(gè)Preprocessing選項(xiàng)卡,截圖如下:
?
?
簡單解析下Preprocessing菜單:
?
轉(zhuǎn)換描述
?
Custom multiplier將值乘以指定的整數(shù)或浮點(diǎn)值。使用此選項(xiàng)將以KB,MBps等接收的值轉(zhuǎn)換為B,Bps,否則zabbix無法正確設(shè)置前綴(K,M,G等)。從zabbix 2.2開始,也支持使用科學(xué)符號。 例如。 1e + 70。
?
Right trim從值的末尾刪除指定的字符。
?
Left trim從值的起始處刪除指定的字符。
?
Trim從值的起始和結(jié)尾刪除指定的字符。
?
Regular expression將值與正則表達(dá)式匹配,并用替換值。 正則表達(dá)式支持用N序列提取最多10個(gè)捕獲的組。 參數(shù):
?
pattern?– 正則表達(dá)式
?
output?– 輸出格式化模板。一個(gè)N(其中N = 1 … 9)轉(zhuǎn)義序列被替換為第N個(gè)匹配組。
?
Boolean to decimal將值從布爾格式轉(zhuǎn)換為十進(jìn)制。文本表示被轉(zhuǎn)換為0或1.因此,“TRUE”存儲為1,“FALSE”存儲為0.所有值都以不區(qū)分大小寫的方式進(jìn)行匹配。當(dāng)前被認(rèn)為的布爾值值如下:
?
TRUE?– true, t, yes, y, on, up, running, enabled, available
?
FALSE?– false, f, no, n, off, down, unused, disabled, unavailable
?
此外,任何非零數(shù)值都被認(rèn)為是TRUE,0被認(rèn)為是FALSE。
?
Octal to decimal將八進(jìn)制格式的值轉(zhuǎn)換為十進(jìn)制。
?
Hexadecimal to decimal將值從十六進(jìn)制格式轉(zhuǎn)換為十進(jìn)制。
?
Delta計(jì)算當(dāng)前值和上一個(gè)值之間的差值。評估為value-prev_value,其中 value – current value; prev_value – 以前收到的值每個(gè)項(xiàng)目只允許一個(gè)delta操作。
?
Delta per second計(jì)算每秒速度的值變化(當(dāng)前值和上一個(gè)值的差值)。
?
計(jì)算為(value-prev_value)/(time-prev_time),其中 value – 當(dāng)前值; prev_value – 當(dāng)前收到的值; time – 當(dāng)前時(shí)間戳,prev_time – 以前值的時(shí)間戳。
?
這個(gè)設(shè)置是非常有用的,以獲得每秒不斷增長的速度值。 如果當(dāng)前值小于上一個(gè)值,zabbix將丟棄該差異(不存儲)并等待另一個(gè)值。這有助于正常工作,例如,32位SNMP計(jì)數(shù)器的包裝(溢出)。
?
注意: 由于此計(jì)算可能產(chǎn)生浮點(diǎn)數(shù),建議將’Type of information’ 設(shè)置為?Numeric (float),即使傳入的原始值是整數(shù)。 這對于小數(shù)部分尤其重要。 如果浮點(diǎn)值很大并且可能超過’float’字段長度,在這種情況下,整個(gè)值可能會丟失,實(shí)際上建議使用Numeric(無符號),因此只會修剪小數(shù)部分。
?
?
1.1 正則表達(dá)式
?
1、選擇字符或文本監(jiān)控項(xiàng)選擇了收集系統(tǒng)CPU信息的監(jiān)控項(xiàng)作為實(shí)驗(yàn)操作對象。未做處理時(shí)原始值為字符串?
?
?
?
2、現(xiàn)在把這個(gè)監(jiān)控項(xiàng)的Preprocessing名稱下拉菜單選擇為正則表達(dá)式?
?
?
3、根據(jù)官方說明信息,監(jiān)控項(xiàng)收集字符串如果符合^processor正則表達(dá)式的就會被替換為test,等待一段時(shí)候后結(jié)果符合預(yù)期?
?
?
4、正則表達(dá)式還可以使用N(N=1……9)序列方式,格式化輸出替換的模版,大大豐富的正則替換的類型,并可以重組替換的輸出值。下面修改正則表達(dá)式使用序列方式自定義輸出值?
?
?
5、正則表達(dá)式為(GenuineIntel).*(working),替換值為 1 test 2,第一個(gè)括號的正則表達(dá)式代表第一個(gè)序列,第二個(gè)括號的正則表達(dá)式代表第二個(gè)序列,替換值分別使用1和2代表,不過必須要注意去掉括號后,整個(gè)正則表達(dá)式必須匹配監(jiān)控項(xiàng)值的一部分,否則得出的結(jié)果為空值。?
?
?
得出的結(jié)果符合預(yù)期。
?
6、Proprocessing還有一個(gè)特別棒的功能,被轉(zhuǎn)換了一次的數(shù)值可以在被下一層繼續(xù)處理,如果熟悉使用過shell命令的管道符的話,對于這個(gè)就不難理解。如下圖,增加多一層轉(zhuǎn)換?
?
?
結(jié)果為?
?
?
7、可以在添加一層轉(zhuǎn)換,使用d+匹配其中的數(shù)字
?
?
結(jié)果為?
?
?
1.2 自定義倍數(shù)
?
1、根據(jù)上面得出的數(shù)字,使用Custom multiplier自定義倍數(shù)轉(zhuǎn)換,可獲得預(yù)期值?
?
?
結(jié)果為?
?
?
1.3 過濾尾字符
?
1、從值的末尾刪除指定的字符?
?
?
結(jié)果為?
?
?
1.4 過濾首字符
?
1、從值的起始處刪除指定的字符?
?
?
結(jié)果為?
?
?
注:其它的轉(zhuǎn)換處理根據(jù)表格說明自行驗(yàn)證
?
1.5 存儲值轉(zhuǎn)換
?
有意思是這些處理是在數(shù)據(jù)儲存到數(shù)據(jù)庫前的操作,而觸發(fā)器的觸發(fā)操作依據(jù)是數(shù)據(jù)庫中儲存的值,所以這一串處理儲存到數(shù)據(jù)庫的值是整數(shù)值類型的8,可以為這個(gè)監(jiān)控項(xiàng)配置一個(gè)判斷大于8等類型的觸發(fā)器。?
?
?
?
1.6 總結(jié)語
?
preprocessing功能非常實(shí)用,如深信服的網(wǎng)絡(luò)設(shè)備,使用snmp方式監(jiān)控并收集回來的數(shù)據(jù),由于廠商預(yù)先進(jìn)行了處理,導(dǎo)致網(wǎng)絡(luò)流量的值為4.5MB或者56KB等形式,人性化的表現(xiàn)形式,而對于3.4以前的zabbix來說,整數(shù)或浮點(diǎn)數(shù)后面多一兩個(gè)字符,這整串?dāng)?shù)據(jù)就不能以整數(shù)值或者浮點(diǎn)數(shù)配置監(jiān)控項(xiàng)的數(shù)據(jù)庫收集類型,必須使用文本字符串類型,而文本和字符串類型監(jiān)控項(xiàng)觸發(fā)器不能使用數(shù)值監(jiān)控類型的判斷并觸發(fā)流量報(bào)警。要變成數(shù)字類型,唯一的方式是使用外部檢查預(yù)先編寫字符串處理腳本,但增加的配置監(jiān)控項(xiàng)的繁瑣程度,且外部檢查降低了zabbix的性能,3.4的preprocessing功能使得問題解決,并更加靈活的處理監(jiān)控?cái)?shù)據(jù)。作者:寒竹的簡書鏈接:http://www.jianshu.com/p/21feb34bba2b來源:簡書簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處。