Возникла задача - мониторить программный 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 будут одни и те же значения.