Nagios alerts using twitter (with twurl) not firing

We’ve been using nagios for some time and have recently decided to change how we receive alerts. To this end, we’ve installed twurl ( https://github.com/marcel/twurl ) and are using it to send alerts. Unfortunately this logs alerts as having been sent, but none get to the monitor’s twitter account. twurl uses a pretty standard CLI which looks like this (nagios macros left in tact):

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

Here’s the notification command:

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
}

Syntax works fine etc, no issues there. 1st line fires off the 2nd command_line line is to output the contents of the macros nagios uses, and returns what would be expected in all cases.

twurl pitfalls we’ve definitely avoided:

  • we’ve authed to twitter for nagios’s user (su’d in and checked, works
    fine when done manually).
  • the credentials of the app are correct (again, works fine when using
    twurl manually)
  • the settings of the twitter app ( on http://dev.twitter.com ) are
    correct (set to read/write direct messages etc)

I can provide any specific pieces of information anyone might need for extra context but for now that’s about it. Edit: I’m starting to suspect this is due to a lack of a .profile when nagios itself calls twurl, but I’m not 100% sure and still can’t make it “go”.

Update: ascertained that the script is not using the .twurlrc from nagios’s home directory when nagios executes it. This is a problem I still can’t resolve, any other help would be much appreciated.

Answer

Nagios runs external commands without any ENV. To simulate this, you can try running your manual test via “env -i “. You seem to already know this, because you are explicitly setting PATH and HOME. You should try to avoid this, and just use full paths in any scripts/commands/etc.

You also might need to escape some of the non-alphanumeric characters in your command_line, because the shell may eat them. To test this, you can enable debugging output in nagios.cfg (see ‘debug_level’ http://nagios.sourceforge.net/docs/3_0/configmain.html ) or change the command to “echo … > /tmp/whatisnagiosrunning.txt” or similar.

Attribution
Source : Link , Question Author : jhackett , Answer Author : Keith

Leave a Comment