zabbix 3.4新功能值解析——Preprocessing預處理
Zabbix 3.4版本更新了許多新功能,其中一個監控項功能Preprocessing,根據官方說明文檔,在監控項收集的數據存儲到數據庫前,預先對數據進行處理,使用效果超過預期。這個功能存放位置在創建item後多了一個Preprocessing選項卡,截圖如下
簡單解析下Preprocessing菜單:
轉換 |
描述 |
Custom multiplier |
將值乘以指定的整數或浮點值。使用此選項將以KB,MBps等接收的值轉換為B,Bps,否則Zabbix無法正確設置前綴(K,M,G等)。從Zabbix 2.2開始,也支持使用科學符號。 例如。 1e + 70。 |
Right trim |
從值的末尾刪除指定的字符。 |
Left trim |
從值的起始處刪除指定的字符。 |
Trim |
從值的起始和結尾刪除指定的字符。 |
Regular expression |
將值與<pattern>正則表達式匹配,並用<output>替換值。 正則表達式支持用\N序列提取最多10個捕獲的組。\ 參數: |
Boolean to decimal |
將值從布爾格式轉換為十進制。文本表示被轉換為0或1.因此,“TRUE”存儲為1,“FALSE”存儲為0.所有值都以不區分大小寫的方式進行匹配。當前被認為的布爾值值如下: |
Octal to decimal |
將八進制格式的值轉換為十進制。 |
Hexadecimal to decimal |
將值從十六進制格式轉換為十進制。 |
Delta |
計算當前值和上一個值之間的差值。評估為value-prev_value,其中 value - current value; prev_value - 以前收到的值每個項目只允許一個delta操作。 |
Delta per second |
計算每秒速度的值變化(當前值和上一個值的差值)。 |
1.1 正則表達式
1、選擇字符或文本監控項
選擇了收集系統CPU信息的監控項作為實驗操作對象。未做處理時原始值為字符串
2、現在把這個監控項的Preprocessing名稱下拉菜單選擇為正則表達式
3、根據官方說明信息,監控項收集字符串如果符合^processor正則表達式的就會被替換為test,等待一段時候後結果符合預期
4、正則表達式還可以使用\N(N=1……9)序列方式,格式化輸出替換的模版,大大豐富的正則替換的類型,並可以重組替換的輸出值。下面修改正則表達式使用序列方式自定義輸出值
5、正則表達式為(GenuineIntel).*(working),替換值為 \1 test \2,第一個括號的正則表達式代表第一個序列,第二個括號的正則表達式代表第二個序列,替換值分別使用\1和\2代表,不過必須要註意去掉括號後,整個正則表達式必須匹配監控項值的一部分,否則得出的結果為空值。
得出的結果符合預期。
6、Proprocessing還有一個特別棒的功能,被轉換了一次的數值可以在被下一層繼續處理,如果熟悉使用過shell命令的管道符的話,對於這個就不難理解。如下圖,增加多一層轉換
結果為
7、可以在添加一層轉換,使用\d+匹配其中的數字
結果為
1.2 自定義倍數
1、根據上面得出的數字,使用Custom multiplier自定義倍數轉換,可獲得預期值
結果為
1.3 過濾尾字符
1、從值的末尾刪除指定的字符
結果為
1.4 過濾首字符
1、從值的起始處刪除指定的字符
結果為
註:其它的轉換處理根據表格說明自行驗證
1.5 存儲值轉換
有意思是這些處理是在數據儲存到數據庫前的操作,而觸發器的觸發操作依據是數據庫中儲存的值,所以這一串處理儲存到數據庫的值是整數值類型的8,可以為這個監控項配置一個判斷大於8等類型的觸發器。
1.6 總結語
preprocessing功能非常實用,如某些品牌的網絡設備,使用snmp方式監控並收集回來的數據,由於廠商預先進行了處理,導致網絡流量的值為4.5MB或者56KB等形式,人性化的表現形式,而對於3.4以前的zabbix來說,整數或浮點數後面多一兩個字符,這整串數據就不能以整數值或者浮點數配置監控項的數據庫收集類型,必須使用文本字符串類型,而文本和字符串類型監控項觸發器不能使用數值監控類型的判斷並觸發流量報警。要變成數字類型,唯一的方式是使用外部檢查預先編寫字符串處理腳本,但增加的配置監控項的繁瑣程度,且外部檢查降低了zabbix的性能,3.4的preprocessing功能使得問題解決,並更加靈活的處理監控數據。
zabbix 3.4新功能值解析——Preprocessing預處理