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

Nagios: HTTP-проверки с XMPP, в уведомлениях отсутствует URL-адрес

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

Итак, проверки HTTP в основном выглядят так:

define service {
        host_name                               ourhostname
        service_description                     Typo 3
        check_command                           check_http!www.ourdomain.com!/
        max_check_attempts                      3
        check_interval                          1
        retry_interval                          1
        check_period                            24x7
        notification_interval                   30
        notification_period                     24x7
        contact_groups                          developers
}

И вот в чем проблема. Когда возникает проблема, достойная уведомления, sendxmpp вызывается следующим образом:

define command {
        command_name    notify-service-by-xmpp
        command_line    echo "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $ARG1$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /usr/bin/sendxmpp -j <server-ip> -u nagios -p <password> $CONTACTPAGER$
}

Где мы пытались использовать $ARG1$, нам понадобится проверенный URL. Кажется, что в уведомлении есть доступ к стандартным переменным для проблемного объекта (например $HOSTADDRESS$), но нам нужен URL.

Проблема также может заключаться в том, что я неправильно проверяю URL-адреса. Обычно у вас есть только HOSTADDRESS запись, но казалось неправильным документировать URL-адреса в определении хоста, а затем добавлять несколько команд для проверки $HOSTADDRESS1$ через $HOSTADDRESS15$.

Есть ли у кого-нибудь решение о том, как получить доступ к аргументу командной строки, переданному тесту, или лучшую идею о том, как проверить целое количество URL-адресов для одного и того же хоста под разными vhosts, не открывая ни несколько разных команд, ни разные хосты?

Я не знаю, есть ли лучшее решение, но, похоже, это вариант использования пользовательских переменных (ссылка: http://nagios.sourceforge.net/docs/3_0/customobjectvars.html)

Просто добавьте что-то вроде этого в определение вашей службы:

_domain             www.ourdomain.com

Затем вы можете использовать его в команде уведомления как $ _DOMAIN $