Мониторить свободное место на хранилищах 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).