我们已经使用了一段时间了,最近决定改变我们如何收到警报。 为此,我们安装了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我们绝对避免的陷阱:
我可以提供任何人可能需要额外的上下文的任何特定的信息,但现在就是这样。 编辑:我开始怀疑这是由于缺乏一个.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 – 在不久的将来,我可能会在某些时候为自己做点贡献。
感谢所有的帮助:)