zabbix 自己編寫腳本進行監控


第一步:編寫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開兩個監控項,這是兩個監控項,就必須有兩個不同的鍵。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM