Skip to content

Instantly share code, notes, and snippets.

@gjedeer
Created October 10, 2011 19:55
Show Gist options
  • Save gjedeer/1276352 to your computer and use it in GitHub Desktop.
Save gjedeer/1276352 to your computer and use it in GitHub Desktop.
Nagios + XMPP (Jabber) notifications
#!/usr/bin/python
"""
Use either Nagios env variables or command line args
and send jabber message using sendxmpp
by GDR!
Fill in contact's PAGER to his JID, and add the following command:
define command {
command_name notify-by-xmpp
command_line /usr/bin/nag_send_xmpp '$NOTIFICATIONTYPE$' '$SERVICEDESC$' '$HOSTNAME$' '$SERVICESTATE$' '$SERVICEOUTPUT$' '$SHORTDATETIME$' '$CONTACTPAGER$' '$HOSTSTATE$' '$HOSTOUTPUT$'
}
"""
import os
import subprocess
import sys
variables = ('NOTIFICATIONTYPE', 'SERVICEDESC', 'HOSTNAME', 'SERVICESTATE', 'SERVICEOUTPUT', 'SHORTDATETIME', 'CONTACTPAGER', 'HOSTSTATE', 'HOSTOUTPUT')
env = {}
for i, var in enumerate(variables):
if 'NAGIOS_'+var in os.environ:
env[var] = os.environ['NAGIOS_'+var]
else:
env[var] = sys.argv[i+1]
if len(env['SERVICEDESC']) > 0:
text = "%s: %s on %s is %s: %s (%s)" % (env['NOTIFICATIONTYPE'], env['SERVICEDESC'], env['HOSTNAME'], env['SERVICESTATE'], env['SERVICEOUTPUT'], env['SHORTDATETIME'])
else:
text = "%s: %s is %s: %s (%s)" % (env['NOTIFICATIONTYPE'], env['HOSTNAME'], env['HOSTSTATE'], env['HOSTOUTPUT'], env['SHORTDATETIME'])
jid = env['CONTACTPAGER']
cmd = subprocess.Popen(('sendxmpp', '-t', jid, '-f', '/var/lib/nagios/.sendxmpprc', '-d'), stdin=subprocess.PIPE, stdout=sys.stdout, stderr=sys.stdout)
out, err = cmd.communicate(text)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment