Pull to refresh

Настройка Zabbix мониторинга серверов по протоколу IPMI средствами ipmitool

Введение


Предупрежден — значит вооружен. Думаю, не стоит пускаться в долгие объяснения, зачем нужен мониторинг, и нужен ли вообще, в сети полно подробных статей по этой теме. Здесь же я хотел остановиться на проблеме, возможно надуманной, настройки мониторинга серверов по iLO портам.

Когда первый раз столкнулся с данной задачей очень удивился, обнаружил в сети несколько статей, по большей части переводов, одного источника. Настройка по этой статье, выдала результат, но имела несколько недостатков:
  1. При запросе каждого элемента мониторинга (item), Zabbix генерирует вызов стороннего скрипта, а на один сервер этих элементов приходиться более 50 штук, что повышает нагрузку на сервер.
  2. Ответ от iLO интерфейса приходят не мгновенно. Происходят разрывы в графиках.

Как я решил эти недостатки, я хотел бы рассказать, возможно куму то будет интересно.

Мысли


Решение первой проблемы, было через запрос всех параметров с помощью команды:
ipmitool -U zabbix -P password -H <hostname> -L USER -I lanplus sdr

(Предварительно, создаем пользователя «zabbix», с минимальным привилегиями, для доступа к iLO)

Далее вывод команды помещаем в файл, и уже из файла парсим нужные данные.

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

Настройка


Все действия производились на сервере с ОС CentOS 6.5. Zabbix 2.0.

Результатом умозаключений стало 2 фала-скрипта.
  • buffer.sh
    #!/bin/bash

    IP=$1

    ipmitool -U zabbix -P password -H $IP -L USER -I lanplus sdr > /usr/lib/zabbix/externalscripts/temp_iLO/$IP«T»
    cat /usr/lib/zabbix/externalscripts/temp_iLO/$IP«T» > /usr/lib/zabbix/externalscripts/temp_iLO/$IP


  • query_iLO3.sh
    #!/bin/bash

    PASSW=$1
    IP=$2
    KEY=$3
    # Блок компенсации разницы вывода iLO4 hp 360e g7 и iLO4 hp 360d g7
    fan=$(cat /usr/lib/zabbix/externalscripts/temp_iLO/$IP | grep «Fan 1»| awk -F"|" "{print $ 1}")
    fan=$(echo $fan | sed s/" "//)
    if [ "$fan" = «Fan 1» ]
    then
    if [[ "$KEY" =~ «Fan Block» ]]
    then
    KEY=$(echo $KEY | sed s/" Block"//)
    fi
    fi
    # конец блока
    cat /usr/lib/zabbix/externalscripts/temp_iLO/$IP | grep "$KEY "| awk -F"|" '{print $ 2}' | awk '{print $ 1}'


Через cron вызываем выполнение сценария в качестве параметра передавая IP интерфейса iLO:

crontab -e
*/1 * * * * /usr/lib/zabbix/externalscripts/buffer.sh <ip_addres_iLO>


Скрипт принимает результат от ipmitool, и складывает в файл с именем формата +T. После завершения записи в файл, происходит перемещение информации в файл с именем формата: , для дальнейшего парсинга. Этими манипуляциями мы решаем проблему задержки при получении данных.

Далее Zabbix через внешние проверки запускаем скрипт парсинга query_iLO3.sh, передавая в него имена интересующих датчиков.

image

Заключение


Конечно алгоритм не предусматривает, полной потери соединения на длительный срок но решает проблему прерывания графиков, и множественных запросов на iLO интерфейс. Возможно, есть более изящные решения о которых я с удовольствием прочитаю в комментариях.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.