Мониторить хосты VMware ESXi очень полезно, чтобы эффективнее траблшутить. И в этой статье я рассмотрю, как настроить мониторинг ESXi хоста с помощью Zabbix.
В качестве сервера Zabbix у меня Debian 10. Сам Zabbix версии 4.0.4 (Но для используемого шаблона подойдет и любая старше 2.4.х). IP адрес ESXi хоста 192.168.1.1
Шаблон, который мы будем использовать – VMWare ESXi 6.0 via Common Information Model (CIM). Скачаем его по ссылке. В архиве сам шаблон, 2 скрипта и Readme.
Какие данные мы получим?
С хоста:
CPU
Datastore Accessibility
Datastore Capacity
Datastore Free Space
Datastore Used Space
Datastore Uncommited Space
Datastore File System Type
Datastore Latency
Datastore URL
Datastore IOPS
General ESX Information
Hardware Information
Memory
Network
С гостевых ВМ:
Virtual Machine CPU Installed
Virtual Machine Cores per Socket
Virtual Machine CPU Usage
Virtual Machine RAM Installed
Virtual Machine Memory Usage
Virtual Machine Ballooned Memory
Virtual Machine Compressed Memory
Virtual Machine Host Memory Usage
Virtual Machine Shared Memory
Virtual Machine Overhead Memory
Virtual Machine Private Memory
Virtual Machine Swapped Memory
Virtual Machine Power Status
Virtual Machine Heartbeat Status
Virtual Machine Datastore
Virtual Machine Uptime
Guest Tools Version
Guest Tools Status
Snapshots
Приступим.
1) Примапим значения
Переходим в “Administration -> General -> Value Mapping” и создаем следующее сопоставление:
“VMware – Ethernet Port Status”
0 = Disabled
1 = Enabled
2 = Down
2) Импортируем шаблон
Заходим в “Configuration -> Teamplates -> Import”
Выбираем файл TEMPLATE.VMWARE_ESXi_6.0_CIM.xml и жмем “Import”.
3) Установим зависимости
Для Debian/Ubuntu:
# apt update
# apt install sblim-wbemcli python-pyvmomi python-setuptools jq python-setuptools pypy-wand
# apt-get install python-pip
# pip install pysphere
# pip install docopt
Для CentOS (не проверял, возможно инструкция стара, лучше установить pip и с его помощью поставить pysphere и docopt, как выше):
# yum -y install sblim-wbemcli.x86_64 pywbem.noarch python2-pyvmomi.noarch python-setuptools jq python-setuptools zabbix-sender.x86_64
# easy_install -U pysphere
# easy_install -U docopt
4) Создадим аккаунт на VMWare ESXi с правами чтения через CIM данных мониторинга
Сделать это можно через SHH (предварительно его включив) на хосте ESXi. Логин будет zabbix, а пароль MyPa$$w0rd.
# /usr/lib/vmware/auth/bin/adduser -s /sbin/nologin -D -H zabbix -G root && echo "MyPa$$w0rd" | /usr/lib/vmware/auth/bin/passwd --stdin zabbix && vim-cmd vimsvc/auth/role_add CIM_ReadOnly Host.Cim.CimInteraction System.Anonymous && vim-cmd vimsvc/auth/entity_permission_add vim.Folder:ha-folder-root 'zabbix' false CIM_ReadOnly true
5) Узнаем UUID хоста ESXi
Необходимо активировать MOB VIB.
Для включения через CLI:
# vim-cmd proxysvc/add_np_service "/mob" httpsWithRedirect /var/run/vmware/proxy-mob
Для отключения через CLI:
# vim-cmd proxysvc/remove_service "/mob" "httpsWithRedirect"
Но удобнее это сделать через vSphere (vCenter):
1. Идем в Advanced Settings -> Config -> Hostagent -> ищем “Config.HostAgent.plugins.solo.enableMob” и делаем его true (для vCenter: Configure -> Advanced System Settings)
2. Заходим на https://192.168.1.1/mob/?moid=ha-host&doPath=hardware.systemInfo вводим логин и пароль, копируем UUID.
3. Отключаем MOB VIB (делаем false для Config.HostAgent.plugins.solo.enableMob)
Альтернативно можно получить UUID через команду “esxcfg-info -u”, но тогда его надо перевести в нижний регистр.
6) Прописываем Macros
Заходим в Zabbix на хост, в закладку Macros и вводим следующие данные:
{$USERNAME} = zabbix
{$PASSWORD} = MyPa$$w0rd
{$URL} = https://192.168.1.1/sdk
{$UUID} = 31313736-3536-5a43-3233-313630304d43 (который мы получили в 5 шаге)
У меня это выглядит так:
7) Скрипты ExternalScrips
Поместим 2 скрипта (agent_vsphere_wrapper и agent_vsphere) в директорию ExternalScrips нашего Zabbix Server и назначим привилегии:
# cd /etc/zabbix/externalscripts/
# chmod a+x agent_vsphere_wrapper agent_vsphere
В конфиге Zabbix сервера должно быть указано
ExternalScripts=/etc/zabbix/externalscripts
8) Назначаем шаблон VMWARE_ESXi_6.0_CIM (TEMPLATE.2017_VMWARE_ESXi_6.0_CIM) для нашего VMWare ESXi
Спустя минут 10 мы уже можем наблюдать собранные данные в Latest Data.
PS. Если честно по инструкции “от производителя”, которая в архиве, у меня не сразу все заработало… Но большинство моментов я учел в этой статье. Так что все должно быть ок. Единственное, что еще можно сделать, это в скрипте agent_vsphere_wrapper строки 41 и 42 заменить на указанные ниже, явно указав путь к директории и IP адрес нашего Zabbix сервера
ExternalScriptsDir=/etc/zabbix/externalscripts/
ZabbixServer=192.168.1.100
Иначе у меня сыпались ошибки в Latest Data… Вообще если там ошибки, то можно проверить работоспособность скрипта agent_vsphere_wrapper, запустив его. Если в нем пустые данные, то надо лезть в логи Zabbix сервера и разбираться…