Назад | Перейти на главную страницу

Как проверить температуру с помощью Nagios через http?

У нас есть несколько серверных стоек, за которыми следит nagios. Теперь мы хотим контролировать температуру внутри стоек с помощью установки Nagios за пределами стоек. Температура внутри серверных стоек измеряется серверами, работающими в стойке, которые обеспечивают температуру через http. Запрос http://serverinrack12/temp доставляет один из четырех Командные сообщения, совместимые с Nagios:

OK - temp 25 °C
WARNING - temp 45 °C
CRITICAL - temp 65 °C
UNKNOWN - cannot read temp

Код ответа HTTP всегда HTTP/1.1 200 OK.

Как Nagios может проанализировать этот HTTP-ответ, если на сервере ничего нельзя изменить?

Есть ли команда Nagios для чтения состояний службы по http? Как можно интегрировать эту команду Nagios в определение команды, например так как

define command {
    command_name    check_http_temp
    command_line    .... -H $HOSTADDRESS$
}

В идеале есть команда для вызова этих временных проверок, добавляя идентификатор для поддержки нескольких термометров, подключенных к этому серверу:

http://serverinrack12/temp?id=1

Последний вопрос: как мы можем получить данные о температуре с Nagios через http?

Вам нужно либо написать плагин, либо найти тот, который будет анализировать содержимое веб-страницы. Nagios все равно вообще какая строка возвращается (поскольку она предназначена для потребления человеком). Nagios заботится только о коде выхода (возвращаемое значение AKA).

Вы можете сделать это, ничего не устанавливая на серверах. Вы можете, например, написать сценарий bash, который извлекает /temp content через curl, а затем выполняет сопоставление строк. Подложка "bash" для выбранного вами языка сценариев.

Акция check_http плагин может искать определенную строку, но, насколько я вижу, он не может возвращать разные значения статуса для разных строк.

Если вы не хотите что-то писать, покопайтесь в Nagios Exchange и / или Monitoring Exchange.

Похоже, что вы выполняете проверку, чтобы увидеть, активна ли служба http. Это не пытается анализировать контент.
Взгляните на плагин check_http_content от Вот

Попробуйте этот сценарий Perl с параметрами -C и -W: check_http_enhanced