zoukankan      html  css  js  c++  java
  • 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次以上的数据。

    修改好之后,我们再次来看看效果:

     发现这个时候是正常的了。

    再来看看时间间隔:

    发现时间间隔也是有序的,看来就没有什么毛病了。整个监控搭建成功了。

  • 相关阅读:
    python代写主题LDA建模和t-SNE可视化
    Python代写LDA主题模型算法应用
    R语言代写之文本分析:主题建模LDA
    Python代写商品数据预处理与K-Means聚类可视化分析
    matlab代写使用Copula仿真优化市场风险
    BZOJ 5495: [2019省队联测]异或粽子 可持久化trie+堆
    BZOJ 3689: 异或之 可持久化trie+堆
    BZOJ 4212: 神牛的养成计划 可持久化trie+trie
    BZOJ 2006: [NOI2010]超级钢琴 ST表+堆
    BZOJ 4103: [Thu Summer Camp 2015]异或运算 可持久化trie
  • 原文地址:https://www.cnblogs.com/FengGeBlog/p/10369177.html
Copyright © 2011-2022 走看看