Снимаем данные с хоста ESXi в Zabbix

Мониторить хосты 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 сервера и разбираться…


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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Unlix © Все права защищены 2019

Копирование материалов с сайта Unlix.ru без указания полной ссылки на источник ЗАПРЕЩЕНО!