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

Предупреждения Nagios с использованием твиттера (с twurl) не срабатывают

Некоторое время мы использовали nagios и недавно решили изменить способ получения предупреждений. Для этого мы установили twurl ( https://github.com/marcel/twurl ) и используют его для отправки предупреждений. К сожалению, это регистрирует отправленные предупреждения, но ни одно не попадает в учетную запись монитора в Twitter. twurl использует довольно стандартный интерфейс командной строки, который выглядит так (макросы nagios оставлены без изменений):

/usr/local/bin/twurl -d "status=d @$CONTACTEMAIL$ $NOTIFICATIONTYPE$: $TIME$ : $HOSTALIAS$ / $SERVICEDESC$ is $SERVICESTATE$ ($SERVICEOUTPUT$)" /1/statuses/update.xml

Вот команда уведомления:

define command {
    command_name    notify-service-by-twurl
    command_line    PATH="/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/nagios/bin"; HOME="/home/nagios"; /usr/local/bin/twurl -d "status=d @$CONTACTEMAIL$ $NOTIFICATIONTYPE$: $TIME$ : $HOSTALIAS$ / $SERVICEDESC$ is $SERVICESTATE$ ($SERVICEOUTPUT$)" /1/statuses/update.xml &>/tmp/lastcheck
#   command_line    /bin/echo '/usr/local/bin/twurl -d "status=d @$CONTACTEMAIL$ $NOTIFICATIONTYPE$: $TIME$ : $HOSTALIAS$ / $SERVICEDESC$ is $SERVICESTATE$ ($SERVICEOUTPUT$)" /1/statuses/update.xml' > /tmp/foo
}

Синтаксис работает нормально и т.д., проблем нет. 1-я строка запускает 2-ю строку command_line для вывода содержимого макросов, используемых nagios, и возвращает то, что можно было бы ожидать во всех случаях.

ловушки twurl, которых мы определенно избежали:

Я могу предоставить любую конкретную информацию, которая может понадобиться кому-либо для дополнительного контекста, но пока что об этом. Изменить: я начинаю подозревать, что это связано с отсутствием .profile, когда сам nagios вызывает twurl, но я не уверен на 100% и до сих пор не могу заставить его "пойти".

Обновление: установлено, что сценарий не использует .twurlrc из домашнего каталога nagios, когда nagios его выполняет. Это проблема, которую я все еще не могу решить. Любая другая помощь будет очень благодарна.

Nagios запускает внешние команды без какого-либо ENV. Чтобы смоделировать это, вы можете попробовать запустить ручной тест с помощью «env -i». Кажется, вы уже это знаете, потому что явно устанавливаете PATH и HOME. Вы должны попытаться избежать этого и просто использовать полные пути в любых скриптах / командах / и т. Д.

Вам также может потребоваться экранировать некоторые не буквенно-цифровые символы в строке command_line, потому что оболочка может их съесть. Чтобы проверить это, вы можете включить вывод отладки в nagios.cfg (см. 'Debug_level' http://nagios.sourceforge.net/docs/3_0/configmain.html ) или измените команду на «echo ...> /tmp/whatisnagiosrunning.txt» или аналогичную.

Нашел обходной путь, который исправляет некоторые вещи (а также может способствовать twurl, чтобы это не нарушало другие вещи!).

В rcfile.rb (мой находится в /usr/local/lib/ruby/gems/1.8/gems/twurl-0.6.5/lib/twurl/rcfile.rb) сделайте следующее изменение. Ниже оригинал:

    module Twurl
      class RCFile
        FILE = '.tqurlrc'
        @directory ||= ENV['HOME']
        class << self
          attr_accessor :directory

А ниже модификация:

    module Twurl
      class RCFile
        FILE = '.twurlrc'
        @directory ||= '/home/nagios/'
        class << self
          attr_accessor :directory

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

Спасибо всем, кто помог :)