Skip to content

VMware: datastores and hosts monitoring with Zabbix

12.07.2013

Какая система мониторинга не использовалась бы, необходимо получать данные из наблюдаемой системы. VMware могла оказать огромную услугу, если бы писала показатели инфраструктуры в виндовые «Performance Counters», тогда любой мониторинг не вызывал бы проблем, но на данный момент это кажется фантастикой. Фантастикой, потому что создается впечатление, что генеральная линия компании заключается в том, что бы не признавать существование никаких других продуктов вокруг себя (впрочем, у VMware и так все хорошо, зачем им кого-то признавать). Вывод такой сделан на основании того, что, если флагман VMware vCenter и имеет довольно удобные апплеты vSphere PowerCLI (которые скорее являются инструментом управления, чем мониторинга), то другие продукты (а, в частности, VMware View), не имеют средств выгрузки полезных (именно полезных) показателей во внешние системы вовсе. О мониторинге View я еще заведу разговор позже, там целая история, а вот начну все же с мониторинга vCenter.

Моей конечной целью является мониторинг свободного места на Datastores и состояния хостов ESXi. Исходя из найденной информации, самым простым и в то же время НЕ элегантным решением стала связка Zabbix и vCenter с использованием powershell-скрипта с апплетами vSphere PowerCLI для выгрузки. И тем не менее, данный способ вполне адекватно работает и не вызывает нареканий. Итак, обо всем по порядку:

1. Создаем локальную учетную запись на сервере vCenter. Необходимо, что бы эта учетная запись имела доступ к параметрам vCenter. Самые смелые могут дать этой учетной записи права локального администратора.

2. Создаем в «планировщике задач» задание, запускаемое от имени учетной записи п. 1, которое при запуске системы с отсрочкой в 15 минут единожды выполняет следующий powershell-скрипт:

Add-PSSnapin VMware.VimAutomation.Core -ErrorAction SilentlyContinue
Connect-VIServer vCenter.domain.local > $nul
$Storages = @(
"storage-1"
"storage-2"
)
$Hosts = @(
"esxi-1.domain.local"
"esxi-2.domain.local"
)
while (1 -gt 0) {
 $Storages | % {
 $("$([math]::Round((Get-Datastore $_).FreeSpaceGb,2))").Replace("`,","`.") | out-file "C:\Zabbix\vmware\$_"
 }
 $Hosts | % {
 (Get-VMHost $_).ConnectionState | out-file "c:\zabbix-agent\monitoring\$_"
 }
 Start-Sleep -s 180
}

Скрипт работает как Windows-служба и раз в три минуты создает в папке «c:\zabbix-agent\monitoring» файлы с именами хранилищ / хостов, в которые записываются полученные значения.

3. Редактируем конфигурацию Zabbix-агента. Нужно добавить следующую строчку:

UserParameter=vcentermonitor[*],c:\windows\cmd.exe /c type c:\zabbix-agent\monitoring\$1

После чего перезапускаем службу агента.

4. В самом Zabbix в хосте с vCenter добавляем «элементы данных» следующего вида: vcentermonitor[storage-1]. Этот «элемент данных» будет собирать информацию о свободном месте на хранилище.

Таким образом можно мониторить любой параметр, который получится достать через Powershell PowerCLI. Для примера, при использовании DRS можно выгружать количество виртуалок на хосте, объем свободной RAM и т.п. Постоянно запущенный скрипт Powershell через некоторое время может начать пожирать память (у меня такого эффекта не наблюдалось), в таком случае можно настроить периодический его перезапуск. Как бы то ни было, такой запуск скрипта лучше, чем ежеменутный запуск агентом Zabbix, если вы понимаете, о чем я.

Реклама

From → Uncategorized

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

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

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: