Nagios оповещения с помощью твиттера (с twurl) не стреляют

Некоторое время мы использовали nagios и недавно решили изменить способ получения оповещений. Для этого мы установили twurl ( https://github.com/marcel/twurl) и используем его для отправки оповещений. К сожалению, это регистрирует предупреждения как отправленные, но никто не попадает в твиттер-аккаунт монитора. 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, и возвращает то, что ожидается во всех случаях.

мы избежали ошибок:

  • мы подключились к твиттеру для пользователя nagios (проверено и проверено, отлично работает вручную).
  • учетные данные приложения верны (опять же, отлично работает при использовании twurl вручную)
  • настройки приложения Twitter (на http://dev.twitter.com/) правильные (для чтения / записи прямых сообщений и т. д.)

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

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

2 ответа

Решение

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

Вам также может понадобиться экранировать некоторые не алфавитно-цифровые символы в командной строке, потому что оболочка может их съесть. Чтобы проверить это, вы можете включить выходные данные отладки в 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

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

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

Другие вопросы по тегам