A year or so ago I came to the same conclusion (I happen to be a Nagios
user, but the problem is the same).

I wrote a tool that I called "genoa" for "GEneric NOtification
Author/Arranger/Artist" which lets you set up templates for what you want
your messages to look like, and does environment variable substitution.
The templates are searched for based on host, service, etc.

So, just as you propose, the notification command line looks like
    command_line genoa -s
to send mail, or
    command_line genoa -p
to send pages.

I also wrote a notification tool I called "tellitto" which is meant for
use if you have multiple ways to send pager notifications, and which
"genoa -p" will use.

I'll invite you to have a look
    http://www.syonex.com/resources/software/
    http://exchange.nagios.org/directory/Addons/Notifications/genoa/details
    http://exchange.nagios.org/directory/Addons/Notifications/tellitto/details
and would welcome any feedback.

As for forcing Icinga (or whatever) to send a notification, just unplug
something :-)  Or, if that's not an option, you could add a check that is
bound to fail e.g. check for a TCP port that you know is closed.

Hope this is helpful - cheers!

John




On Wed, Feb 06, 2013 at 02:55:28PM +0100, Simon Oosthoek wrote:
| Hi all
| 
| I'm wondering why notification comand_line's are so complicated (i.e. 
| long and hard to read).
| Most if not all relevant macro's are available as environment variables, 
| according to the documentation 
| http://docs.icinga.org/latest/en/macrolist.html
| 
| Wouldn't it be much easier to define a script to handle the sending of a 
| notification (doesn't matter what type)? The script could then take the 
| information from ICINGA_* variables and if one isn't exported, request 
| it from the commandline.
| 
| Then the script can use all that to produce an e-mail or sms or whatever.
| 
| 
| e.g. instead of:
| command_line    /usr/bin/printf "%b" "$SHORTDATETIME$ - 
| Info:\n\n$HOSTOUTPUT$\n\n$NOTIFICATIONTYPE$ - Host $HOSTNAME$ is 
| $HOSTSTATE$\n\n(Address: $HOSTADDRESS$ Displayname: 
| $HOSTDISPLAYNAME$)\n\nNotes: $NOTIFICATIONAUTHOR$ 
| 
$NOTIFICATIONCOMMENT$\n$HOSTNOTESURL$\n\nUrl:\nhttp://ICINGAHOST/icinga/cgi-bin/extinfo.cgi?type=1&host=$HOSTNAME$\n\n";
 
| | /usr/bin/mail -s "$NOTIFICATIONTYPE$ - $HOSTNAME$ is $HOSTSTATE$" 
| $CONTACTEMAIL$
| 
| why not:
| command_line  $USER1$/send_email
| 
| with /usr/local/icinga/libexec/send_email:
| #!/bin/bash
| 
| if [[ -z "$ICINGA_CONTACTEMAIL" ]]; then
|          exit 1
| fi
| 
| mutt -s "$ICINGA_NOTIFICATIONTYPE - $ICINGA_HOSTNAME is 
| $ICINGA_HOSTSTATE" "$ICINGA_CONTACTEMAIL" <<EOF
| 
| Info: $ICINGA_HOSTOUTPUT
| 
| $ICINGA_NOTIFICATIONTYPE - Host $ICINGA_HOSTNAME is $ICINGA_HOSTSTATE
| 
| Address: $ICINGA_HOSTADDRESS
| Displayname: $ICINGA_HOSTDISPLAYNAME
| 
| Notes: $ICINGA_NOTIFICATIONAUTHOR $ICINGA_NOTIFICATIONCOMMENT
| $ICINGA_HOSTNOTESURL
| 
| Url: 
| http://ICINGAHOST/icinga/cgi-bin/extinfo.cgi?type=1&host=$ICINGA_HOSTNAME";
| 
| EOF
| 
| I've yet to try it, but I was also wondering how to force icinga to send 
| a notification so I could test it...?
| 
| /Simon
| 
| ------------------------------------------------------------------------------
| Free Next-Gen Firewall Hardware Offer
| Buy your Sophos next-gen firewall before the end March 2013 
| and get the hardware for free! Learn more.
| http://p.sf.net/sfu/sophos-d2d-feb
| _______________________________________________
| icinga-users mailing list
| icinga-users@lists.sourceforge.net
| https://lists.sourceforge.net/lists/listinfo/icinga-users

------------------------------------------------------------------------------
Free Next-Gen Firewall Hardware Offer
Buy your Sophos next-gen firewall before the end March 2013 
and get the hardware for free! Learn more.
http://p.sf.net/sfu/sophos-d2d-feb
_______________________________________________
icinga-users mailing list
icinga-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/icinga-users

Reply via email to