Мониторинг свободного места на хранилищах ESXi5 через vMA

Мониторить свободное место на хранилищах ESXi с помощью уведомлений (alerts) от vCenter просто. Пара щелчков мыши, и при превышении пороговых значений вам прилетит письмо или отправится событие на приемник SNMP. Но как быть, если ваш хост бесплатен и vCenter не предвидится?

VMFS Disk Usage – 27-04-12
VMFS Volume Disk Size,Gb Available,Gb
datastore1 465 189
datastore2 139 138
datastore3 139 82

Нравится?
Для наглядности, строки с хранилищами, на которых свободно меньше 10% или 5% емкости, подсвечиваются желтым или красным.

Давненько Duncan Epping писал про скрипт, отслеживающий свободное место на хранилищах ESX и про отправку писем с ESX. Проблема в том, что на ESXi подобные скрипты не работают, а Duncan советует использовать PowerCLI.

PowerCLI – это вещь, но создавать виндовый сервер только под мониторинг не хотелось. И тут я подумал – почему не адаптировать скрипты Duncan’а под работу с vMA и вот что получилось…

Подготовка к отправке почты.

– забираем отсюда (http://search.cpan.org/~yves/MIME-Lite-3.01/lib/MIME/Lite.pm) Lite.pm и кладем его по адресу /usr/lib/perl5/5.8.0/MIME (или другому, зависит от версии perl на vMA);

– поднимаем smtp-релей, который будет перенаправлять почту нужному адресату без авторизации.

Создаем скрипт следующего содержания.

LOGLOC="/var/log/"
LOG="${LOGLOC}vdf.html"
MYDATE=$(date +%d-%m-%y)
VMFSYELLOW=90
VMFSRED=95

cat /dev/null > “${LOG}”
echo “<html>” >> “${LOG}”
echo “<head>” >> “${LOG}”
echo “<style>” >> “${LOG}”
echo “body {margin: 10px; width: 600px; font-family:arial; font-size: 10px;}” >> “${LOG}”
echo “div#footer {font-size: 9px;}” >> “${LOG}”
echo “</style>” >> “${LOG}”
echo “</head>” >> “${LOG}”
echo “<body>” >> “${LOG}”

echo “<table cellspacing=”0″ cellpadding=”2″ border=”1″; style=’border-collapse:collapse; background-color: white; color: black’>” >> “${LOG}”
echo “<tr><th colspan=’3′; align=’left’; style=’background-color: rgb(179,179,179); color: black’>” >> “${LOG}”
echo “VMFS Disk Usage – $MYDATE</th></tr>” >> “${LOG}”
echo “” >> “${LOG}”
echo “<tr>” >> “${LOG}”
echo “<td><b>VMFS Volume</b></td><td><b>Disk Size,Gb</b></td><td><b>Available,Gb</b></td>” >> “${LOG}”
echo “</tr>” >> “${LOG}”

esxcli –server=192.168.1.1 –username=root –password=”gfhjkm” storage filesystem list | grep -E VMFS | awk ‘{print $2 ” ” $6 ” ” $7}’ | while read output ; do
VOLNAME=$(echo $output | awk ‘{ print $1 }’ )
DISKSIZE=$(echo $output | awk ‘{ print $2 }’ )
DISKAVAILABLE=$(echo $output | awk ‘{ print $3 }’ )
DISKSIZE=$((DISKSIZE/1073741824))
DISKAVAILABLE=$((DISKAVAILABLE/1073741824))
PERCENTINUSE=$((100*(DISKSIZE-DISKAVAILABLE)/DISKSIZE))
WARNING=”white”
if [ $PERCENTINUSE -ge $VMFSYELLOW ] ; then
WARNING=”yellow”
fi
if [ $PERCENTINUSE -ge $VMFSRED ] ; then
WARNING=”red”
fi
echo “<tr><td style=’background-color: ${WARNING}’>$VOLNAME</td>” >> “${LOG}”
echo “<td style=’background-color: ${WARNING}’>$DISKSIZE</td>” >> “${LOG}”
echo “<td style=’background-color: ${WARNING}’>$DISKAVAILABLE</td>” >> “${LOG}”

done
echo “</table>” >> “${LOG}”
echo “<div id=’footer’>Created by Haron</div>” >> “${LOG}”
echo “</body>” >> “${LOG}”
echo “</html>” >> “${LOG}”

/home/vi-admin/smtp_send.pl -t admins@domain.com -s “Diskspace report of the VMFS volumes” -f esx01@domain.com -m “cat /var/log/vdf.html” -r 192.168.1.2

Описания ключей скрипта отправки:

-t: кому;

-s: тема;

-f: от кого;

-m: текст письма;

-r: почтовый релей.
Готовый скрипт можно скачать тут (vdf.zip).

Leave a Reply

Your email address will not be published. Required fields are marked *