#!/bin/bash
export LC_ALL=""
export LANG="C"
# Проверка на передачу параметров
if [[ -z "$1" || -z "$2" || -z "$3" ]]; then
##### DISCOVERY #####
DEVICES=`iostat -d | awk '{print $1}' | sed -e '/^\([hsv]d[a-z]\)$/!d'`
if [[ -n ${DEVICES} ]]; then
JSON="{ \"data\":["
SEP=""
for DEV in ${DEVICES}; do
JSON=${JSON}"$SEP{\"{#HDNAME}\":\"${DEV}\"}"
SEP=", "
done
JSON=${JSON}"]}"
echo ${JSON}
fi
exit 0
fi
##### PARAMETERS #####
RESERVED="$1"
METRIC="$2"
DISK="$3"
EXEC_TIMEOUT="2"
NOW_TIME=`date '+%s'`
##### RUN #####
# Чтение статистики по метрике для конкретного диска
declare -A METRICS=(
["r/s"]=2 ["rkB/s"]=3 ["rrqm/s"]=4 ["%rrqm"]=5
["r_await"]=6 ["rareq-sz"]=7 ["w/s"]=8 ["wkB/s"]=9
["wrqm/s"]=10 ["%wrqm"]=11 ["w_await"]=12 ["wareq-sz"]=13
["d/s"]=14 ["dkB/s"]=15 ["drqm/s"]=16 ["%drqm"]=17
["d_await"]=18 ["dareq-sz"]=19 ["f/s"]=20 ["f_await"]=21
["aqu-sz"]=22 ["%util"]=23
)
COLUMN=${METRICS[$METRIC]}
if [[ -z "$COLUMN" ]]; then
echo "Неизвестная метрика, проверьте в 'iostat -dxk': $METRIC"
exit 1
fi
iostat -dxk | awk -v disk="$DISK" -v col="$COLUMN" '$1 == disk {print $col}'
|