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

Мониторинг нескольких веб-сайтов на сервере в nagios

Я хотел бы контролировать / тестировать несколько виртуальных хостов на веб-сервере Apache, и, кроме того, я хотел бы, чтобы эти проверки отображались как одна служба в Nagios -> HTTP. И если один из веб / URL не работает, служба отображается как сбой / тревога. Не знаю, возможно ли это.

Я установил Nagios на другой сервер и хочу проверить, отвечают ли сети с кодом состояния 200.

Итак, вопрос в том, можно ли настроить nagios для проверки нескольких веб-сайтов в одном сервисе? Возможно ли установить несколько check_command в сервисе?

check_command   check_httpv!google.com
check_command   check_httpv!gmail.com

Как вы отслеживаете виртуальные хосты в nagios? вы создаете сервис для каждого сайта?

С уважением и заранее спасибо!

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

#!/bin/sh

for HOST in $* ; do
   check_http -H $HOST [...other args...] >/dev/null 
   if [ $? -ne 0 ] ; then
      echo "$HOST not responding"
      exit 2
   fi
done
echo "All hosts ok"
exit 0

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

Чтобы реализовать это, вы должны создать проверку службы для каждого виртуального хоста, а затем создать одну проверку для Apache, предположительно с помощью check_http, чтобы проверить через IP-адрес и убедиться, что что-то прослушивает порт 80.

Затем вы должны создать служебные зависимости для проверки службы каждого виртуального хоста и настроить их так, чтобы они зависели от проверки Apache. Если проверка Apache не удалась, все проверки виртуального хоста (которые зависят от проверки Apache) перестанут отправлять уведомления и / или выполнять проверки, пока проверка Apache не будет восстановлена.

Напишите сценарий bash, который вызывает check_http.pl несколько раз для каждого переданного аргумента.

Настройте его как свой собственный тип службы, и вы готовы к работе.

Я недостаточно знаком с bash, чтобы делать это с головы до ног, но несколько базовых руководств по bash легко помогут вам в этом.

«Правильный» способ сделать это - использовать check_multi:

http://my-plugin.de/wiki/projects/check_multi/start

Настройте check_multi для одновременного вызова нескольких проверок check_http (см. Check_http --help и посмотрите на флаги -H и -I). Вы можете задать пороговые значения для количества предупреждений / критических ударов до тех пор, пока мультисервис не будет предупрежден / крит и т. Д. Это очень мощный и гибкий инструмент.

Вы также можете использовать check_cluster (это устаревший способ сделать это, и он приводит к тому, что множество дополнительных сервисов засоряют веб-интерфейс nagios). Если вы хотите пойти по этому пути, вы можете прочитать официальную документацию о мониторинге кластеров:

http://nagios.sourceforge.net/docs/3_0/clusters.html

Да это возможно я блоггинг об этом. Дублирование основных вещей здесь.

Вам понадобится (1) сценарий, который принимает список URL-адресов, проверяет их и возвращает соответствующие коды состояния, (2) команда Nagios, которая использует сценарий, (3) определение хоста, которое использует команду для проверки.

Ставить сценарий в /etc/nagios3/check_urls.

Определите команду в /etc/nagios3/conf.d/commands.cfg:

define command {
    command_name check_urls
    command_line /etc/nagios3/check_urls $_HOSTURLS$
}

Определите хост в /etc/nagios3/conf.d/hosts.cfg:

define host {
    host_name     example-host
    alias         My Example
    address       123.123.123.123
    check_command check_urls
    _urls         my-blog.com,my-api.com/check
}