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

Запись опубликована в рубрике 5.0, VMware, vSphere с метками , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *