分散式系統監視zabbix講解六之自定義監控項--技術流ken
除了支援開箱即用的巨集之外,Zabbix 還支援更靈活的使用者巨集。
使用者巨集可以在全域性、模板和主機級別進行定義。這些巨集具有一個特殊的語法:
{$MACRO}
使用者巨集可被用於:
- 監控項名稱;
- 監控項鍵值引數;
- 觸發器名稱和描述;
- 觸發器表示式引數和常量;
- 許多其他位置;
巨集名稱中允許使用以下字元:A-Z , 0-9 , _ , . 。
Zabbix 根據以下優先順序解析巨集:
- 主機級別的巨集 (首先檢查);
- 為主機的第一級別模板定義的巨集(即,直接連結到主機的模板),按照模板 ID 來排序;
- 為主機的第二級別模板定義的巨集,按照模板 ID 來排序;
- 為主機的第三級別模板定義的巨集,按照模板ID來排序,等;
- 全域性巨集 (最後檢查)。
換言之,如果一個主機不存在一個巨集, Zabbix 將會嘗試在級別遞增的主機模板中找到它,如果仍然找不到,那麼將會使用全域性巨集(如果全域性巨集存在的話)。
如果 Zabbix不能找到巨集, 那麼巨集將不能被解析。
如果要定義使用者巨集,請轉到Zabbix的前端頁面的如下位置:
- 對於全域性巨集,請訪問 管理 → 常規 → 右上角下拉選單選擇 “巨集” ;
- 對於主機和模板級別的巨集,請開啟主機或模板屬性並檢視 巨集 標籤頁面。
認識userparameter_mysql.conf檔案
這個檔案在zabbix客戶端的子目錄下,如果你想要自己來設定監控項的話,參考這個檔案即可。
[[email protected] ~]# ls /etc/zabbix/zabbix_agentd.d/ testuser.conf userparameter_mysql.conf
現在我們來開啟它,看一下具體內容
[[email protected] ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf # For all the following commands HOME should be set to the directory that has .my.cnf file with password information. # Flexible parameter to grabglobal variables. On the frontend side, use keys like mysql.status[Com_insert]. # Key syntax is mysql.status[variable]. UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix mysql -N | awk '{print $$2}' # Flexible parameter to determine database or table size. On the frontend side, use keys like mysql.size[zabbix,history,data]. # Key syntax is mysql.size[<database>,<table>,<type>]. # Database may be a database name or "all". Default is "all". # Table may be a table name or "all". Default is "all". # Type may be "data", "index", "free" or "both". Both is a sum of data and index. Default is "both". # Database is mandatory if a table is specified. Type may be specified always. # Returns value in bytes. # 'sum' on data_length or index_length alone needed when we are getting this information for whole database instead of a single table UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/var/lib/zabbix mysql -N' UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive UserParameter=mysql.version,mysql -V
可以看到這個檔案裡面只有四行是生效的,其餘的都已經被註釋掉了。現在我們來過濾出來這幾行
[[email protected] ~]# cp /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf{,bak} #對檔案做一個備份 [[email protected] ~]# grep -E -v '^#|^$' /etc/zabbix/zabbix_agentd.d/userparameter_mysql.confbak > /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf #過濾出註釋行和空白行 [[email protected] ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix mysql -N | awk '{print $$2}' #檢視資料庫狀態 UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/var/lib/zabbix mysql -N' #檢視資料庫空間大小 UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive #檢視資料庫是否線上 UserParameter=mysql.version,mysql -V #檢視資料庫版本資訊
自定義監控專案
現在我們已經瞭解了整個檔案的書寫格式,即
1. UserParameter=key,command
2.UserParameter=key[*],command
兩種格式的區別即第一個不能接受使用者引數,第二個可以接受變數,更加靈活。
現在我們一一來實現,直觀感受下效果。
1. UserParameter=key,command 應用示例
第一步:進入到子目錄下,建立一個testyserp.conf (檔名無所謂,你也可以把你自己設定的寫進上面那個檔案中,都是可以的。)
[[email protected] ~]# cd /etc/zabbix/zabbix_agentd.d/ [[email protected] zabbix_agentd.d]# touch testuserp.conf
第二步:寫入你要監控的內容,這裡我監控的是記憶體的總量,記憶體的使用量,以及記憶體剩餘量。
[[email protected] zabbix_agentd.d]# vim testuserp.conf UserParameter=check.totalmem,free -m| awk -F ' +' 'NR==2{print $2}' UserParameter=check.usedmem,free -m| awk -F ' +' 'NR==2{print $3}' UserParameter=check.freemem,free -m| awk -F ' +' 'NR==2{print $4}'
第三步:重啟zabbix客戶端
[[email protected] zabbix_agentd.d]# systemctl restart zabbix-agent
第四步:在zabbix中新增監控項,configure>hosts>items>create item,上面檔案中定義的三個key一一複製進去,點選add儲存即可,建立三個監控項
第五步:檢視。monitoring>latest data>select,選擇你的組即可檢視
你可以把它們顯示在一張圖形中 前面白色方框內選中>display graph
2.UserParameter=key[*],command應用示例
還是進入到客戶端的子目錄下,建立一個檔案用來儲存自定義的監控項
[[email protected] ~]# cd /etc/zabbix/zabbix_agentd.d/ [[email protected] zabbix_agentd.d]# touch test.conf
寫入我們想要的監控專案。寫成如下格式,這樣我們就可以來接收引數了。
[[email protected] zabbix_agentd.d]# vim test.conf UserParameter=check.meminfo[*],cat /proc/meminfo | awk -F " +" '/$1/{print $$2}'
重啟zabbix-agent客戶端
[[email protected] zabbix_agentd.d]# systemctl restart zabbix-agent
現在把check.meminfo這個key寫進zabbix的key當中。
監控SwapTotal總量
監控SwapFree
新增完之後就可以去monitoring > latest data > select 你的application
選中,選擇display graph.檢視圖形介面
結言
學會了上面的自定義監控,想要監控什麼你是不是都可以做到了那? 只要記住格式,會使用命令來獲取你想要的結果,即可自定義監控項,以數字或者圖形化介面顯示出來。