Munin. Часть 3. Плагин мониторинга ESXi.

Теперь, когда у нас есть цель — «создать плагин Munin для удаленного контроля температур и напряжений на VMware ESXi хосте с использованием утилиты esxcli» и выбран инструмент для её достижения — Munin, можно смело приступать к созданию своего плагина мониторинга!

Постановка задачи

Итак, как мы уже знаем, нам нужно написать скрипт который бы считывал показания сенсоров с ESXi хоста, возвращал бы их значения и понимал бы параметр «config». То есть, при запуске наш скрипт должен:

1. Получать названия метрик и их значения посредством утилиты esxcli
2. Если задан ключ «config», то выводить параметры графика, названия и пороги для каждой метрики
3. Иначе просто возвращать текущее значение каждой метрики

Написать этот скрипт, как я уже упоминал ранее, можно на любом языке, лишь бы на компьютере с нодой Munin был бы соответствующий интерпретатор. Для разнообразия, давайте попробуем написать этот плагин, к примеру, на bash.

Немного о esxcli

Эта утилита позволяет получать и даже изменять множество параметров ESXi, в том числе и считать данные с SDR сервера. Синтаксис команды такой:

esxcli -s СЕРВЕР -u ПОЛЬЗОВАТЕЛЬ -p ПАРОЛЬ КОМАНДА , где

СЕРВЕР — это IP адрес или DNS имя сервера;
ПОЛЬЗОВАТЕЛЬ — имя пользователя;
ПАРОЛЬ — его пароль;
КОМАНДА — непосредственно команда которую мы хотим выполнить.

ESXi привелегииНужно отметить, что указанный пользователь должен быть создан на ESXi и иметь достаточные для выполнения команды права. В нашем случае, как это не странно, необходимы привилегии на изменение параметров хоста.

И наконец команда считывающая данные SDR такая: hardware ipmi sdr list

Подробнее о esxcli можно прочитать в документации VMware vSphere.

Плагин. Передача переменных.

Когда сервер Munin связывается со своей нодой, он передает ей ряд параметров, которые при запуске плагинов будут установлены как переменные окружения. Этот механизм мы можем использовать для того, чтобы передавать нужные параметры в наш скрипт. Для этого, на компьютере с сервером, создадим в   /etc/munin/plugin-conf.d/ файл со следующим содержанием:

Теперь, в плагине «esxcli_env_temp» мы можем использовать, к примеру, переменную «warning» (её значение: «:45»). Думаю дальнейшие комментарии тут излишни.

Плагин. Получаем информацию.

Не забываем, что плагины у нас располагаются в каталоге /etc/munin/plugins/  на целевом компьютере, то есть там, где у нас установлена нода. Никакого отношения к серверной части Munin плагины не имеют!

Итак, получаем вывод команды esxcli:

Все теперь у нас в переменной data, содержится вывод этой команды. Он кстати имеет следующий вид:

Давайте считать, что все сенсоры температуры имеют в своем названии слово «Temp» и измеряются в «degrees». Теперь применяем немного магии bash и извлекаем из этой таблицы нужные данные…

Получаем три массива:

sensor_names — с уникальными именами метрик для Munin (колонка Description и замена пробелов на подчеркивание);
sensor_labels — это названия метрик (колонка Description)
sensor_values — значения (колонка Raw Reading)

Плагин. Запуск с параметром «config»

Давайте теперь напишем часть которая должна отрабатывать при таком запуске:

Первые три строчки возвращают название графика, единицы измерения и его категорию. Затем мы в цикле проходим по всем найденным температурам и для каждой печатаем их наименования и пороги.

Плагин. Запуск без параметров.

Нам просто надо вернуть значения для всех метрик. Смотрим на пример выше и делаем:

Ну вот и все!

Заключение.

Итак, соберем все части в один файл:

Полный текст плагина, вместе с напряжениями, Вы можете найти в репозитроии Munun contrib на GitHub, а посмотреть на результат работы плагина тут. Спасибо за внимание!

 

Оставить ответ