Некоторое время мы использовали 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
Это, вероятно, должно принимать ввод пользователя - что-то, что я могу внести, чтобы повернуть себя в какой-то момент в ближайшем будущем.
Спасибо всем, кто помог :)