zabbix監控磁盤IO


我這里有兩種方法,感覺都不錯。我這里主要是寫一下監控的腳本。

1、使用iostat命令監控

1)首先打開配置文件的自定義腳本功能,然后編寫腳本。

#!/bin/bash

if [ $# -ne 1 ];then
    echo "Follow the script name with an argument"
fi

case $1 in

    rrqm)
        iostat -dxk 1 2|grep -w vda |tail -1 |awk '{print $2}'
        ;;

    wrqm)
        iostat -dxk 1 2|grep -w vda |tail -1 |awk '{print $3}'
        ;;

    rps)
        iostat -dxk 1 2|grep -w vda |tail -1 |awk '{print $4}'
        ;;

    wps)
        iostat -dxk 1 2|grep -w vda |tail -1 |awk '{print $5}'
        ;;

    rKBps)
        iostat -dxk 1 2|grep -w vda |tail -1 |awk '{print $6}'
        ;;

    wKBps)
        iostat -dxk 1 2|grep -w vda |tail -1 |awk '{print $7}'
        ;;

    avgrq-sz)
        iostat -dxk 1 2|grep -w vda | tail -1  |awk '{print $8}'
        ;;

    avgqu-sz)
        iostat -dxk 1 2|grep -w vda |tail -1  |awk '{print $9}'
        ;;

    await)
        iostat -dxk 1 2|grep -w vda|tail -1 |awk '{print $10}'
        ;;

    svctm)
        iostat -dxk 1 2|grep -w vda |tail -1 |awk '{print $13}'
        ;;

    util)
        iostat -dxk 1 2|grep -w vda |tail -1 |awk '{print $14}'
        ;;

    *)
        echo -e "\e[033mUsage: sh $0 [rrqm|wrqm|rps|wps|rKBps|wKBps|avgqu-sz|avgrq-sz|await|svctm|util]\e[0m"
esac

2)添加至agent的腳本路徑里面。

 

完成之后就可以在zabbix里面添加items了

2、第二種方法,

第二種是使用iotop命令來獲取數據

#!/bin/bash
#Date: 2016/11/11
#Author:zhangjie
disk_read(){
  NUM=`/usr/bin/sudo iotop -b -n 3 -d 1| grep "Total DISK READ" | grep -v grep | awk  -F "|" '{print $1}' | awk -F ":" '{print $2}' |  tail -n1 | awk -F "/" '{print $1}'`
  NUM2=`echo $NUM | awk '{print $1}'`
  UNIT=`echo $NUM | awk '{print $2}'`
  if [ $UNIT == "B" ];then
    echo $NUM2
  elif [ $UNIT == "K" ];then
    NUM3=$(echo "$NUM2 * 1024" | bc)
    echo $NUM3
  elif [ $UNIT == "M" ];then
    NUM3=$(echo "$NUM2 * 1024 * 1024" | bc)
    echo $NUM3
  elif [ $UNIT == "G" ];then
    NUM3=$(echo "$NUM2 * 1024 * 1024 * 1024" | bc)
    echo $NUM3
  fi
}
disk_write(){
  NUM=`/usr/bin/sudo iotop -b -n 3 -d 1 | grep "Total DISK WRITE :" |  grep -v grep | awk  -F "|" '{print $2}' | awk -F ":" '{print $2}' | tail -n1 | awk -F "/" '{print $1}'`
  NUM2=`echo $NUM | awk '{print $1}'`
  UNIT=`echo $NUM | awk '{print $2}'`
  if [[ $UNIT == "B" ]];then
    echo $NUM2
  elif [[ $UNIT == "K" ]];then
    NUM3=$(echo "$NUM2 * 1024" | bc)
    echo $NUM3
  elif [[ $UNIT == "M" ]];then
    NUM3=$(echo "$NUM2 * 1024 * 1024" | bc)
    echo $NUM3
  elif [[ $UNIT == "G" ]];then
    NUM3=$(echo "$NUM2 * 1024 * 1024 * 1024" | bc)
    echo $NUM3
  fi
}

main(){
    case $1 in
        disk_read)
           disk_read;
           ;;
        disk_write)
            disk_write;
            ;;
    esac
}
main $1

編寫完腳本以后,我們還需要再做一件事情,修改sudoers文件

把這個添加注釋,去掉此功能。

完成之后就可以進行監控了。

上面是兩個腳本,選擇任意一個都是可以的,接下來就是按照下面的步驟添加items,可能稍有出入,需酌情修改。

3、接下來開始進行測試:在server端使用zabbix_get命令測試腳本是否正確:

[root@ELK-chaofeng zabbix_agentd.d]# zabbix_get -s 127.0.0.1 -p 10050 -k io_check['wKBps']
40.00
[root@ELK-chaofeng zabbix_agentd.d]# zabbix_get -s 127.0.0.1 -p 10050 -k IO_check['disk_write']
87.00

3、看的出來沒有什么問題,那么此時我們在zabbix的監控界面進行添加。

 

4、添加item

 

5、填寫內容即可

 

填寫完之后點擊update”保存

6、添加graph

 

還是在這個界面點擊“graph”

7、添加graph

 

8、填寫內容

 

添加成功后我們就可以查看了。

 9、最后我們看看效果(我這里以上面的第二個腳本為例)

可以看到沒有什么問題。

疑難總結:之前的腳本中,出來的圖像是斷斷續續的,感覺挺是奇怪的。感覺像是時間間隔采集數據的問題。

就是出現上面的這種情況。items里面的監控項是沒有問題,顯示是正常的。

 

然后我換一種方式查看,發現確實read上有很長一段時間沒有數據出現。感覺很不對勁。

后來在腳本中的iotop命令中,將iotop命令后面的參數修改了一下成功了:“iotop -b -n 3 -d 1” ,-d表示多長時間采集一次數據,-n表示采集數據的次數。之前我設置的是0.2秒采集一次數據,現在看來是不合適的。可能這個數值最好與zabbix界面的items里面的“update inteval”保持一致最好,都是1s。

此外,iotop命令第三次采集的數據是稍微穩定點的。所以最好采集3次以上的數據。

修改好之后,我們再次來看看效果:

 發現這個時候是正常的了。

再來看看時間間隔:

發現時間間隔也是有序的,看來就沒有什么毛病了。整個監控搭建成功了。


免責聲明!

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



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