用戶自定義參數
用戶定義參數可以用來幫助用戶實現通過Zabbix agent執行非Zabbix原生的 agent check。
你可以編寫一個命令來檢索所需的數據,并將其包含在用戶自定義參數agent 配置文件中 ('UserParameter' 參數配置)。
一條用戶自定義參數配置應當使用以下語法:
UserParameter=<key>,<command>如你所見,一條用戶自定義參數除了命令部分,還包括一個key。這個key將在配置監控項時使用。輸入你選擇的易于引用的key(key在一臺主機中必須是唯一的)。重啟agent。
接下來,在配置配置監控項時,輸入要執行的來自用戶自定義參數中的,引用命令的key。
用戶自定義參數是由Zabbix agent來執行命令的。在監控項預處理步驟前,最多可以返回512KB的數據。但是,請注意,最終可以存儲在數據庫中的文本值,在MySQL上的限制為64KB(其他數據庫的信息請參閱數據表)。
/bin/sh 在UNIX操作系統中,作為命令行解釋器使用。用戶自定義參數參照agent check超時;如果超時時間到了,那么執行用戶自定義參數的子進程將會被中止。
參見:
分布教程 配置用戶自定參數 parameters命令執行用戶自定義參數用例
一個簡單的命令:
UserParameter=ping,echo 1agent 將始終為使用“ping”為key的監控項返回“1”。
一個復雜一些的例子:
UserParameter=mysql.ping,mysqladmin -uroot ping | grep -c alive如果Mysql服務器是活動狀態,agent將返回“1”,否則會返回“0”。
靈活的用戶自定義參數
靈活的用戶自定義參數可以從key中接受參數。這是一種使用一個用戶自定義參數創建多個監控項的方式。
靈活的用戶自定義參數有以下語法:
UserParameter=key[*],command Parameter參數Description描述 Key 唯一的監控項key。 [*] 用于定義該key接受括號內的參數。參數需在配置監控項時給出 Command 命令在執行時,引用key中指定的值只對靈活的用戶參數有效:你可以在命令中使用位置引用$1 … $9來引用監控項Key中的相應參數。Zabbix解析監控項Key的[]中包含的參數,并相應地替換$1,…,$9。$0會替換為完整的原始命令(在對$0,…,$9執行替換之前的命令)運行。不管位置參數($0,…,$9)是用雙引號( “ )還是單引號( ' )括起來,都會解析位置引用。 要使用位置引用解析,請指定雙美元符號($) - 例如, 。 在這種情況下,執行命令時, 實際上會變成 。 僅對靈活的用戶自定義參數進行搜索具有 符號的位置引用并由Zabbix agent解析替換。 對于簡單的用戶自定義參數,跳過此類參考處理,因此不需要任何$符號引用。默認情況下,不允許用戶在用戶自定義參數中使用某些特殊符號。詳情請移步 UnsafeUserParameters ,查詢相關的符號列表示例一
先來一個簡單的:
UserParameter=ping[*],echo $1我們可以定義無數個監控項來監控所有形如ping[something]格式的東西。
ping[0] - 將總是返回 ‘ 0 ’ping[aaa] - 將總是返回 ‘aaa’示例二
讓我們更進一步!
UserParameter=mysql.ping[*],mysqladmin -u$1 -p$2 ping | grep -c alive這個用戶自定義參數可以用來監控 MySQL 數據庫的狀態??梢韵胂旅娴臉邮絺魅胗脩裘兔艽a:
mysql.ping[zabbix,our_password]示例三
一個文件中有多少行匹配正則表達式?
UserParameter=wc[*],grep -c "$2" $1這個用戶自定義參數能用來計算一個文件中有多少行匹配相應的表達式。就像下面一樣:
wc[/etc/passwd,root] wc[/etc/services,zabbix]命令結果
命令的返回值是標準輸出和標準錯誤。
標準錯誤情況下,不支持文本(字符、日志或是文本類型的信息)的監控項返回文本的用戶自定義參數(字符,日志,文本信息類型)可以返回空格。如果結果不可用,那么這個監控項會變為不支持狀態。