Nagios警报使用twitter(与twurl)不发射

我们已经使用了一段时间了,最​​近决定改变我们如何收到警报。 为此,我们安装了twurl( https://github.com/marcel/twurl )并使用它来发送警报。 不幸的是,这个日志警报已经被发送,但是没有一个到达显示器的twitter帐户。 twurl使用了一个非常标准的CLI,看起来像这样(nagiosmacros保留下来):

/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 } 

语法工作正常等,没有问题那里。 第一行closures第二个command_line行是输出macrosnagios使用的内容,并返回所有情况下预期的内容。

twurl我们绝对避免的陷阱:

  • 我们已经认可了叽叽喳喳的纳吉奥斯的用户(su'd和检查,手动完成工作正常)。
  • 该应用程序的凭据是正确的(再次,手动使用twurl时工作正常)
  • Twitter应用程序的设置( http://dev.twitter.com )是正确的(设置为读/写直接消息等)

我可以提供任何人可能需要额外的上下文的任何特定的信息,但现在就是这样。 编辑:我开始怀疑这是由于缺乏一个.profile当纳吉奥斯本身调用twurl,但我不是100%肯定,仍然不能使“走”。

更新:当nagios执行脚本时,确定脚本没有使用来自nagios主目录的.twurlrc。 这是我仍然无法解决的问题,任何其他帮助将不胜感激。

Nagios不带任何ENV运行外部命令。 为了模拟这个,你可以尝试通过“env -i”运行你的手动testing。 你似乎已经知道这一点,因为你明确地设置PATH和HOME。 你应该尽量避免这种情况,只要在任何脚本/命令/等中使用完整path。

您也可能需要在command_line中转义一些非字母数字字符,因为shell可能会吃掉它们。 要testing这个,你可以在nagios.cfg中启用debugging输出(参见'debug_level'http://nagios.sourceforge.net/docs/3_0/configmain.html),或者将命令改为“echo …> / tmp / whatisnagiosrunning.txt“或类似的。

find解决办法的解决办法(也可能有助于扭转,所以这不会打破其他的事情!)。

在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 

这应该可以接受用户的input – 在不久的将来,我可能会在某些时候为自己做点贡献。

感谢所有的帮助:)