check_iostat.sh查看io状态

  sre

#! /bin/bash
export LANG=en_US.UTF-8

rsecs=0
rsecsmin=
rsecsmax=   
wsecs=0
wsecsmin=
wsecsmax=
await=0
awaitmin=
awaitmax=
util=0
utilmin=
utilmax=
quota=
QUOTASTR=

FLAGE="sda"

StatStr=
CURNUM=             #当前的性能参数

WranResultStr=      #最后形成的告警字符串
ErrorResultStr=     #最后形成的错误字符串
DataResultStr=      #性能呢个参数字符串

function gotErr(){
    if [ "1" -eq 2 ];then        result="{'cpname':'diskio',DataResultStr}"
        result=`echo {result//\'/\"}`
        echoresult
    elif [ "1" -eq 3 ];then        echo "无法获取到指标,疑似组件故障,请确认并请检查监控脚本和运维平台配置"
    fi

    exit1
}


function contain(){
    result=(echo1 | grep "2")
    if [[ "result" != "" ]]
    then
        return 1
    else
        return 0
    fi
}

#返回是否服务是否存活
function getInfo(){

    StatStr=(iostat  -x 1 1 |grep "FLAGE")
    if [ "StatStr" == "" ];then
        gotErr 3
    fi

    contain "StatStr" "iostat"
    if [ ? -eq 1 ];then
        gotErr 3
    fi

}

#依据传入的参数值来判断我们要监控的服务是什么
#然后通过各个函数获取到具体的值
#值之间的
function analysisStat(){

rsec_value=(echo StatStr | awk -F ' ' '{print6} ')
wsec_value=(echoStatStr | awk -F ' ' '{print 7} ')
avgrq_value=(echo StatStr | awk -F ' ' '{print8} ')

        CURNUM=(echoStatStr | awk -F ' ' '{print 6} ')
        parseFileds "rsecs" 

        CURNUM=(echo StatStr | awk -F ' ' '{print7} ')
        parseFileds "wsecs"

        CURNUM=(echoStatStr | awk -F ' ' '{print 10} ')
        parseFileds "await"

        CURNUM=(echo StatStr | awk -F ' ' '{printNF} ')
        parseFileds "util"

        CURNUM=(echoStatStr | awk -F ' ' '{print 2} ')
        parseFileds "rrqm"

        CURNUM=(echo StatStr | awk -F ' ' '{print3} ')
        parseFileds "wrqm"

        CURNUM=(echoStatStr | awk -F ' ' '{print 4} ')
        parseFileds "rs"

        CURNUM=(echo StatStr | awk -F ' ' '{print5} ')
        parseFileds "ws"

        CURNUM=(echoStatStr | awk -F ' ' '{print 8} ')
        parseFileds "avgrq"

        CURNUM=(echo StatStr | awk -F ' ' '{print9} ')
        parseFileds "avgqu"

        CURNUM=(echoStatStr | awk -F ' ' 'BEGIN{column_size=ColumnSize}{if(column_size==12){print11}else if(column_size==14){print 13}else{print 0}} ')
        parseFileds "svctm"

        CURNUM=`awk 'BEGIN{printf "%.2f\n",('avgrq_value'/ 1024) * 'wsec_value'}'`
        parseFileds "write_speed"

        CURNUM=`awk 'BEGIN{printf "%.2f\n",('avgrq_value'/ 1024) * 'rsec_value'}'`
        parseFileds "read_speed"


}

#CURNUM            当前值
#WARNLIMIT         告警的上限
#ERRORLIMIT    异常的上限
#判断以上三个值并拼接结果字符串
function parseFileds(){
    if [[ "DataResultStr" != "" ]];then
        DataResultStr=DataResultStr","
    fi
    DataResultStr="DataResultStr'1':'CURNUM'"
}

#分析结果 给出给出状态
function analysisResult(){

        gotErr 2

}

#输出错误信息并且退出程序
function showHelp(){
    if [ "1" != "" ];then
        echo "请输入1"
    fi
    echo "check_iostat.sh 可以监听本地的io的状态 参数如下"
    echo "check_iostat.sh [-f <str>]"
    echo "-f <str> 特征字符串 表示监控哪个磁盘"
    exit 1
}

while getopts "f:h" arg
do
    case arg in
        f)
            FLAGE=OPTARG
            ;;
        h)
            showHelp
            ;;
        ?) 
            showHelp
            ;;
    esac
done

if [[ "$FLAGE" == "" ]];then
    showHelp "特征项"
fi


#插件正题部分 
#确定存活的
#启动
#分析
getInfo
analysisStat
analysisResult

LEAVE A COMMENT

Captcha Code