vSphere ESXi Zabbix — полный мониторинг

В интернете множество различных статей о том, каким образом подключить ESXi к Zabbix для мониторинга. Но ни одна из них не привела к желаемому результату, чаще всего в итоге не работало вообще ничего. Возможно я плохо искал или делал что-то неправильно. Но 100% рабочей пошаговой инструкции найти не смог. Возможно это связано с различными версиями Zabbix или vSphere — я не знаю. Читая различные форумы я пришел к своей простой инструкции, которая точно заработала и сделал всё так, как я себе и представлял. Эту инструкцию я и публикую ниже. Кому нужно за 10 минут подключить ESXi к Zabbix — добро пожаловать!

Мои версии ПО: ESXi 5.1.0, Zabbix-2.2.8, FreeBSD-10.1

Что нам даст выполнение данной инструкции

Данная статья позволит быстро настроить связку vSphere ESXi Zabbix. После правильной настройки Вы получаете хост, в котором будут настроено автоматическое обнаружение гипервизора и его параметров + автоматическое обнаружение виртуальных машин и их параметров. Обнаруженные гипервизор и виртуальные машины добавляются как новые хосты автоматически. Нет никакой необходимости добавления вручную.

Конфигурирование Zabbix

Сперва необходимо убедиться, что Ваш Zabbix собран с поддержкой libxml2 и libcurl. Если это не так, пересоберите Zabbix с включением данных библиотек. Они обязательны для работы с VMware.

Следующий этап — настройка файла zabbix_server.conf. Включите следующие опции:

StartVMwareCollectors = 1
VMwareCacheSize = 8M
VMwareFrequency = 60

После чего перезапустите Zabbix-сервер.

Убедитесь в том, что поддержка VMware включена. Сразу после перезапуска сервера в лог-файл Zabbix-сервера будет записана информация о поддерживаемых модулях. В моем случае эти записи в логе выглядят так:

Starting Zabbix Server. Zabbix 2.2.8 (revision 51174).
****** Enabled features ******
SNMP monitoring:           YES
IPMI monitoring:            NO
WEB monitoring:            YES
VMware monitoring:         YES
Jabber notifications:      YES
Ez Texting notifications:  YES
ODBC:                      YES
SSH2 support:              YES
IPv6 support:               NO
******************************

Настройка шаблонов Zabbix

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

Для этого в WEB-интерфейсе Zabbix нужно войти в меню: Администрирование — Общие — справа выбрать из выпадающего меню пункт Преобразование значений.

Создаем следующие два преобразования:

VMware status
0 — grey
1 — green
2 — yellow
3 — red

VMware VirtualMachinePowerState
0 — poweredOff
1 — poweredOn
2 — suspended

Теперь необходимо скачать и установить строго в указанном порядке следующие шаблоны. Берем их здесь. (берите близкие к своей версии Zabbix)

  1. Template_Virt_VMware_Hypervisor-2.2.0.xml
  2. Template_Virt_VMware_Guest-2.2.6.xml
  3. Template_Virt_VMware-2.2.0.xml

Создаем узел ESXi

После импорта шаблонов можно приступить к созданию узла сети. Как обычно создаем новый узел сети в Zabbix: Настройка — Узлы сети — Создать узел сети.

На вкладке Узел сети заполняем всю необходимую информацию: Имя узла, видимое имя, группа. IP-адрес здесь можно не указывать, так как ни одно стандартное средство для данного узла работать не будут.

На вкладке Шаблоны подключам один единственный шаблон: Template Virt VMware

Затем на вкладе Макросы создаем три макроса:

  • {$URL} — в значении указываем URL https://IP-адрес-ESXi/sdk (не забудьте тут указать IP-адрес вашей ESXi.
  • {$USERNAME} — в значении указываем имя пользователя
  • {$PASSWORD} — в значении указываем пароль пользователя

Рекомендую в ESXi создать отдельного пользователя на самом верхнем уровне иерархии (в vSphere Client) с правами read only.

Спустя минимум час наблюдаем добавление виртуальных машин и гипервизора в Zabbix. Для этого переходим в меню: Настройка — Узлы сети и справа выбираем группу Hypervisors или Virtual Machines. Если у вас есть кластеры, то Zabbix создаст группы по кластерам автоматически.

Если все появилось, то наблюдаем за собираемыми данными в меню: Мониторинг — Последние данные.

Доработки

Изначально в шаблонах нет красивых графиков и нужных триггеров. Поэтому вам придется создать их вручную. Создавайте нужные графики / триггеры в шаблоне VMware_Guest либо в конкретном узле, если они уникальные для узла.

Так как количество виртуальных процессоров на виртуальных машинах разное, то я создал триггер высокого расхода ресурсов vCPU для каждой виртуальной машины. Может быть как-то можно использовать значение количества процессоров из элементов данных виртуальной машины, умноженное на частоту ядра, взятую из элемента данных из гипервизора, который обслуживает данную ВМ, но я не знаю как это сделать. Если кто-то знает, буду благодарен.

Графики использования памяти виртуальной машины не привязываются к данным гипервизора, поэтому я создал их прям в шаблоне.

Мой график использования ОЗУ выглядит следующим образом:

VM-Memory-Graph

 

А сам шаблон графика выглядит так:

VM-Memory-Graph-setup

 

Спасибо за внимание! Буду рад, если кому-то помог. Попадись мне такая инструкция полгода назад, я был бы очень рад :)

Если есть предложения по улучшению и автоматизации шаблонов / триггеров / графиков, буду очень признателен за советы!

vSphere ESXi Zabbix — полный мониторинг: 26 комментариев

  1. добрый день. а на 6.5 версии не заработало, данные не идут. как быть?
    через открытие snmp и шаблон к линуксу какие-то данные пошли только.
    uid поставил.

  2. Хотелось бы узнать температуру ещё, помимо состояния железяк. Слышал о CIM API, но там показывает только статус, а нужны цифровые значения.

  3. Спасибо большое! Очень хорошая статья — все получилось. Такой вопрос: я в оповещениях использую «Виртуальная машина {HOST.NAME} ({HOST.IP}): Ошибка …..» и заместо {HOST.IP} логично подставляется ip-адрес хоста, т.к. он наследуется виртуальной машиной. А как мне получить именно ip-адрес виртуальной машины?

  4. Рекомендация всем. Никогда не называй в ESX машины по русский. У меня парсить виртуалки перестал.

    Далее, для нормального отображения (в %) заюзаной оперативки делаем

    1) Переходим в шаблон Template Virt VMware Guest
    2) Создаем Items
    Type=Calculated,
    Key=vmware.vm.memory.size.usage.guest.percent[{$URL},{HOST.HOST}],
    Formula=100*last(«vmware.vm.memory.size.usage.guest[{$URL},{HOST.HOST}]»)/last(«vmware.vm.memory.size[{$URL},{HOST.HOST}]»)
    Скрин
    http://skrinshoter.ru/s/160317/bkNhsrtV
    Далее делаем тригер.
    {Template Virt VMware Guest:vmware.vm.memory.size.usage.guest.percent[{$URL},{HOST.HOST}].last()}>75
    скрин
    http://skrinshoter.ru/s/160317/zDXsmd2S?a

  5. Добрый день. От себя скажу, статья нормальная. Люди оставляющие «шлако-коменты» рекомендую тратить силы на составление идеальных на «ваш взгляд» статей и прилагать ссылки на них (если форум позволяет).

    Ни у кого не получилось записывать в «выражение» несколько «итемов» к примеру для сложения или вычитания?

    Нашел вот что.

    https://www.zabbix.com/forum/showthread.php?t=45023

  6. Данная статья очень плоха и не корректна. Для кого она написана не понятно. Новичке ничего не поймет. Половина проблемы как раз таки кроется в сборке zabbix с необходимыми модулями. Если их нету, система не сможет полноценно «общаться» с vmware. но кол во виртуальных машин и их состояние все же передаст. В официальном мануале так же указано различия в значениях Vmwrecolector. и то что 1-3-5 имеют разные функции.так же не сказано что в логах отображается большая часть проблем и что вам не хватает. Например если мы напишем в имени хоста просто esxi то ничего не будет, в логе будет строчка nid uuid of wmvare — что значит нужно ввести в поле name uuid esxi . [ссылки запрещены] вот статья и то лучше описывает все проходящее. Итог, кому нужна ваша статья и зачем не ясно.

    1. Дима, что еще за истерика маленькой девчонки?

      Данная статья очень плоха и не корректна.

      Возможно плоха, но насчет некорректности не согласен. Я не обязан писать для вас хорошие по вашему мнению статьи. Делюсь тем, что помогло мне. Судя по комментариям, моя статья помогла другим.

      Для кого она написана не понятно. Новичке ничего не поймет.

      Не для Вас, это очевидно. Я не ставил перед собой цель объяснить все для новичка. В первом абзаце это ясно сказано.

      Половина проблемы как раз таки кроется в сборке zabbix с необходимыми модулями. Если их нету, система не сможет полноценно «общаться» с vmware.

      Об этом написано в статье. Читайте внимательно.

      В официальном мануале так же указано различия в значениях Vmwrecolector. и то что 1-3-5 имеют разные функции.так же не сказано что в логах отображается большая часть проблем и что вам не хватает. Например если мы напишем в имени хоста просто esxi то ничего не будет, в логе будет строчка nid uuid of wmvare — что значит нужно ввести в поле name uuid esxi .

      Здесь я вообще ничего не понял.

      У меня и еще у других по этой статье получилось добиться заданной цели. Если у Вас не получилось, я то тут причем? Про принцип AS-IS слышали?

      Мне интересно, Вы под каждой статьей, которая Вам не подошла, истерите подобным образом? Не стыдно?

      1. Да Димко походу просто решил так пропиарить собственный блог :) Если то уведомление как я понимаю его вариант решения вопроса, а заодно и денег на новый сервак попросить.

        1. Ради интереса зашел посмотреть его статью в блоге, на которую он ссылку привел.

          Не удается получить доступ к сайту
          Превышено время ожидания ответа от сайта…

          :)

    1. Именно оставшееся свободное место — к сожалению, я не знаю как.
      В шаблоне, о котором идет речь в статье, касательно датастора есть только:
      Unshared storage space
      Uncommitted storage space
      Committed storage space
      Сейчас, к сожалению, уже не на чем поэкспериментировать.

          1. Решение найдено. https://github.com/dav3860/vmbix
            Это приложение позволяет использовать API vcenter для получения информации о всех datastore которые к нему подключены. В принципе вродебы можно и напрямую к ESXi хостам подключаться. Так, что это приемлемое решение которое можно оптимизировать под себя т.к. исходники открыты. Ну и для мониторинга отдельных узлов нужно запускать несколько таких приложений, что не очень удобно. Но как я писал выше его можно улучшить при большом желании и необходимости. Код там выглядит вполне вменяемо.

    1. Мой шаблон может Вам не подойти, потому как идентификаторы статусов могут быть уже заняты.
      Именно с такой проблемой я столкнулся, когда пытался установить готовый шаблон, который без труда можно найти в сети.
      Поэтому рекомендую сделать именно так, как в статье.

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