第一步:編寫shell腳本,要求輸出結果為數值。
如下統計磁盤io /讀寫,隊列,繁忙率等
#cat /opt/zabbix/list.sh
# !/bin/bash device=$1 #監控那個磁盤:sda,sdb action=$2 #監控項:read,write,queue還是util str=`iostat -d -x | grep 'util'` #str2=`echo "$str" | awk '{split($0,arr," ");print arr[7]}'` case $action in read) str2=`echo "$str" | awk '{split($0,arr," ");print arr[6]}'` #判斷iostat中第六列是不是關於read的 if [ $str2 == "rkB/s" ];then printf "%.f" `iostat -d -x 1 3 | grep $1 | sed -n '3p' | awk '{print $6/1024}'` #輸出3行,取第三行的值,然后再將值轉化為MB fi ;; write) str2=`echo "$str" | awk '{split($0,arr," ");print arr[7]}'` if [ $str2 == "wkB/s" ];then printf "%.f" `iostat -d -x 1 3 | grep $1 | sed -n '3p' | awk '{print $7/1024}'` fi ;; queue) str2=`echo "$str" | awk '{split($0,arr," ");print arr[9]}'` if [ $str2 == "avgqu-sz" ];then printf "%.f" `iostat -d -x 1 3 | grep $1 | sed -n '3p' | awk '{print $9}'` fi ;; util) str2=`echo "$str" | awk '{split($0,arr," ");print arr[14]}'` if [ $str2 == "%util" ];then printf "%.f" `iostat -d -x 1 3 | grep $1 | sed -n '3p' | awk '{print $14}'` fi ;; esac
注:可能存在腳本無端報錯問題,可能是拷貝進服務器后,腳本換行標識符有問題,可以用以下命令查看:如果看見有行后有^M,記得要一一刪除
$ vi -b list.sh
第二步:部署zabbix 客戶端
注意:部署的是zabbix客戶端(數據被收集端),不是zabbix 服務器端,
1.進入以下目錄:這里面存放的就是zabbix 的監控規則
/etc/zabbix/zabbix_agentd.d
2.創建監控項
需要vi 一個.conf 的文件,並填寫以下的內容,
UserParameter=custom.vfs.dev.read.second[*],./opt/zabbix_script/discovery_io.sh $1 $2 UserParameter=custom.vfs.dev.write.second[*],./opt/zabbix_script/discovery_io.sh $1 $2 UserParameter=custom.vfs.dev.io.queue[*],./opt/zabbix_script/discovery_io.sh $1 $2 UserParameter=custom.vfs.dev.io.util[*],./opt/zabbix_script/discovery_io.sh $1 $2
解釋:UserParameter 代表的是zabbix 監控項的鍵值(這個后面會用到,到時候就知道干嘛了),逗號后面的部分,其實就是腳本執行命令, $1,$2代表這個腳本需要傳兩個參數
3 重啟zabbix客戶端
systemctl restart zabbix-agent
第三步 配置zabbix
1.創建模板。隨便取一個名字,隨便選擇一個群組即可。模板就是為了將某些監控項進行統一設置,以后那個主機要用,直接引用模板就行了。
2.點擊創建好的模板,進行創建監控項
3.給模塊創建圖形
至此,模塊就創建好了, 只要你想監控的主機,引用這個模塊,就能全部擁有這個模塊的東西了
4.被監控主機,引用模塊
點擊主機,選擇你要監控的主機。然后選擇模塊。進行添加模塊
至此。你就能看見模塊配置的所有圖形了。開心不,這么簡單。
寫到這兒就完了?你想太多了
有沒有注意到,在第二步:編寫監控項的shell腳本時,那么多的監控最后調用都是同一個腳本,為啥不成一個監控項,然后再zabbix配置監控項的時候,傳不同的參數就行。如下圖:
答案:因為每個監控項,必須擁有唯一的鍵值,並一一對應,不然zabbix就會找不數據的。如上面,想監控磁盤的寫和讀,我們就必須在zabbix開兩個監控項,這是兩個監控項,就必須有兩個不同的鍵。