zabbix 3.4新功能值解析——Preprocessing預處理

Zabbix 3.4版本更新了許多新功能,其中一個監控項功能Preprocessing,根據官方說明文檔,在監控項收集的數據存儲到數據庫前,預先對數據進行處理,使用效果超過預期。這個功能存放位置在建立item後多了一個Preprocessing選項卡,截圖以下正則表達式

f484255df77647d70b3a98915c5649ab.png

簡單解析下Preprocessing菜單:shell

轉換數據庫

描述express

Custom multiplier網絡

將值乘以指定的整數或浮點值。使用此選項將以KB,MBps等接收的值轉換爲B,Bps,不然Zabbix沒法正確設置前綴(K,M,G等)。從Zabbix 2.2開始,也支持使用科學符號。 例如。 1e + 70。ide

Right trim性能

從值的末尾刪除指定的字符。ui

Left trimspa

從值的起始處刪除指定的字符。3d

Trim

從值的起始和結尾刪除指定的字符。

Regular expression

將值與<pattern>正則表達式匹配,並用<output>替換值。 正則表達式支持用\N序列提取最多10個捕獲的組。\ 參數:
 pattern - 正則表達式
 output - 輸出格式化模板。一個\N(其中N = 1 … 9)轉義序列被替換爲第N個匹配組。

Boolean to decimal

將值從布爾格式轉換爲十進制。文本表示被轉換爲0或1.所以,「TRUE」存儲爲1,「FALSE」存儲爲0.全部值都以不區分大小寫的方式進行匹配。當前被認爲的布爾值值以下:
 TRUE - true, t, yes, y, on, up, running, enabled, available
 FALSE - false, f, no, n, off, down, unused, disabled, unavailable
 此外,任何非零數值都被認爲是TRUE,0被認爲是FALSE。

Octal to decimal

將八進制格式的值轉換爲十進制。

Hexadecimal to decimal

將值從十六進制格式轉換爲十進制。

Delta

計算當前值和上一個值之間的差值。評估爲value-prev_value,其中 value - current value; prev_value - 之前收到的值每一個項目只容許一個delta操做。

Delta per second

計算每秒速度的值變化(當前值和上一個值的差值)。
 計算爲(value-prev_value)/(time-prev_time),其中 value - 當前值; prev_value - 當前收到的值; time - 當前時間戳,prev_time - 之前值的時間戳。
 這個設置是很是有用的,以得到每秒不斷增加的速度值。 若是當前值小於上一個值,Zabbix將丟棄該差別(不存儲)並等待另外一個值。這有助於正常工做,例如,32位SNMP計數器的包裝(溢出)。
 注意: 因爲此計算可能產生浮點數,建議將'Type  of information' 設置爲 Numeric (float),即便傳入的原始值是整數。  這對於小數部分尤爲重要。 若是浮點值很大而且可能超過'float'字段長度,在這種狀況下,整個值可能會丟失,實際上建議使用Numeric(無符號),所以只會修剪小數部分。
 每一個監控項只容許一個delta操做。


1.1        正則表達式

一、選擇字符或文本監控項

選擇了收集系統CPU信息的監控項做爲實驗操做對象。未作處理時原始值爲字符串

9f421c2da9b90f2e9f733a12ff302436.png

dca71d0e179739f48effe9c294d49019.png

二、如今把這個監控項的Preprocessing名稱下拉菜單選擇爲正則表達式

e1be2f2f59bb6a03b42b66a3271a8e97.png

三、根據官方說明信息,監控項收集字符串若是符合^processor正則表達式的就會被替換爲test,等待一段時候後結果符合預期

d444a5b00d52bb01ab830d0570298bf7.png

四、正則表達式還可使用\N(N=1……9)序列方式,格式化輸出替換的模版,大大豐富的正則替換的類型,並能夠重組替換的輸出值。下面修改正則表達式使用序列方式自定義輸出值

160021ab46736b0f25055c23c88f6cf4.png

五、正則表達式爲(GenuineIntel).*(working),替換值爲 \1 test \2,第一個括號的正則表達式表明第一個序列,第二個括號的正則表達式表明第二個序列,替換值分別使用\1和\2表明,不過必需要注意去掉括號後,整個正則表達式必須匹配監控項值的一部分,不然得出的結果爲空值。

73f20bf5d8e4773675ba41ce1b84e519.png

得出的結果符合預期。


六、Proprocessing還有一個特別棒的功能,被轉換了一次的數值能夠在被下一層繼續處理,若是熟悉使用過shell命令的管道符的話,對於這個就不難理解。以下圖,增長多一層轉換

8b48924bccf69910dac8778129c49c6c.png

結果爲

1deeac43f6b90b41084a3496ae0cd1f0.png

七、能夠在添加一層轉換,使用\d+匹配其中的數字

3542a0d282b91a80c6519e1aacce08c7.png

結果爲

22a3556f87e4003388421ca08fddba14.png

1.2        自定義倍數

一、根據上面得出的數字,使用Custom multiplier自定義倍數轉換,可得到預期值

8b4248c2b19f50af041e469ad7b78b04.png

結果爲

0670a25ab3f3b6dbb59fe18adfbbbd78.png

1.3        過濾尾字符

一、從值的末尾刪除指定的字符

358a405c4d980f931aa5e3edfeb6b1dc.png

結果爲

0584a0945baf0b4c12fb12180954f454.png

1.4        過濾首字符

一、從值的起始處刪除指定的字符

5c55063f4e2f8e606800770677545acd.png

結果爲

a691bc1d5dc1364154c36d8a4b011caa.png

注:其它的轉換處理根據表格說明自行驗證

1.5        存儲值轉換

      有意思是這些處理是在數據儲存到數據庫前的操做,而觸發器的觸發操做依據是數據庫中儲存的值,因此這一串處理儲存到數據庫的值是整數值類型的8,能夠爲這個監控項配置一個判斷大於8等類型的觸發器。


26aceab7276903f9a7c50c2d274d67ed.png

1ff75b53ea77450be9186af48a7ccddd.png

1.6        總結語

    preprocessing功能很是實用,如某些品牌的網絡設備,使用snmp方式監控並收集回來的數據,因爲廠商預先進行了處理,致使網絡流量的值爲4.5MB或者56KB等形式,人性化的表現形式,而對於3.4之前的zabbix來講,整數或浮點數後面多一兩個字符,這整串數據就不能以整數值或者浮點數配置監控項的數據庫收集類型,必須使用文本字符串類型,而文本和字符串類型監控項觸發器不能使用數值監控類型的判斷並觸發流量報警。要變成數字類型,惟一的方式是使用外部檢查預先編寫字符串處理腳本,但增長的配置監控項的繁瑣程度,且外部檢查下降了zabbix的性能,3.4的preprocessing功能使得問題解決,並更加靈活的處理監控數據。



         加入咱們,一塊兒玩轉zabbix。j_0061.gif

相關文章
相關標籤/搜索