Возникла задача - мониторить программный raid linux и текущие параметры дисков, при этом внешняя система мониторинга понимает только числовые значения на выходе.
1) Мониторинг рэйда:
mdadm --detail /dev/md[X] | grep "State :" | awk '{ if ($NF == "clean") print "0"; \ else if ($NF == "active") print "0"; else print "1" }
если на выход 0 — то все хорошо
если 1 — то плохо
вместо X необходимо подставить номер md device.
Возможные состояния рэйда:
State : clean
State : active
State : clean, degraded — при поврежденном диске
State : clean, degraded, recovering — при добавлении диска в рэйд
2) мониторинг дисков через iostat
r/s iostat -x -m -y 1 1 -d /dev/sd[X] | grep sd[X] | awk '{ print $4 }' w/s iostat -x -m -y 1 1 -d /dev/sd[X] | grep sd[X] | awk '{ print $5 }' rMB/s iostat -x -m -y 1 1 -d /dev/sd[X] | grep sd[X] | awk '{ print $6 }' wMB/s iostat -x -m -y 1 1 -d /dev/sd[X] | grep sd[X] | awk '{ print $7 }' await iostat -x -m -y 1 1 -d /dev/sd[X] | grep sd[X] | awk '{ print $10 }' r_await iostat -x -m -y 1 1 -d /dev/sd[X] | grep sd[X] | awk '{ print $11 }' w_await iostat -x -m -y 1 1 -d /dev/sd[X] | grep sd[X] | awk '{ print $12 }'
iostat важно указать числовые значения interval (1) и count (1), тем самым мы говорим нам на выходе надо один report. Иначе на выходе iostat будут одни и те же значения.