Acknowledge problems via e-mail

Terry Davis terrybdavis at gmail.com
Mon Sep 15 17:57:51 CEST 2008


On Mon, Sep 15, 2008 at 10:32 AM, Jorge Peña <cotarelo2 at hotmail.com> wrote:

>  Hello list,
>
> I have a running instalation of Nagios capable to acknowledge via web
> interface and SMS (I followed some tutorial for that).
>
> I guessed Nagios had implemented by default the acknowledgementent via
> e-mail by default just replying to the e-mail but I discovered that it
> doesn't work.
>
> Somebody did? how?
>
> Regards,
> Jorge
>
>
1) install postfix
2) install procmail
3) use the following procmailrc for the nagios user:
LOGFILE=$HOME/.procmailrc.log
VERBOSE=yes
PATH=/usr/bin
:0
* ^Subject:[    ]*\/[^  ].*
| /usr/lib/nagios/eventhandlers/processmail "${MATCH}"

4) /usr/lib/nagios/eventhandlers/processmail is at the end of this email
5) the program assumes notifications are formatted like mine.  I put them at
the end of this email too.
6) when you receive an alert on your blackberry while at the bar, simply
reply to the email and prepend the subject of the alert with:
"something ack"

I'm probably missing some things so if it doesn't work right away, post back
and I'll help as much as I can.  This comes with no warranty.  Its poorly
written perl.  It probably has a huge security hole.  There's probably a
better way to do this.  It very well may turn your servers into an Atom bomb
and blow up the moon.  Just warning you...  :)

Thanks,
Terry



################################
define command{
        command_name    notify-by-email
        command_line    /usr/bin/printf "%b" "Notification Type:
$NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress:
$HOSTADDRESS$\nState: $SERVICESTATE$\nNotification Number:
$SERVICENOTIFICATIONNUMBER$\n\nDate/Time: $LONGDATETIME$\n\nAdditional
Info:\n\n$SERVICEOUTPUT$" | /usr/lib/nagios/eventhandlers/notification
$SERVICENOTIFICATIONNUMBER$ localhost nagios at domain.com $CONTACTEMAIL$ "**
$NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **"
service
        }

define command{
        command_name    notify-by-epager
        command_line    /usr/bin/printf "%b" "Service: $SERVICEDESC$\nHost:
$HOSTNAME$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\nNotification
Number: $SERVICENOTIFICATIONNUMBER$\nInfo: $SERVICEOUTPUT$\nDate:
$LONGDATETIME$" | /usr/bin/sendEmail -s localhost -f nagios at domain.com -t
$CONTACTEMAIL$ -u "$NOTIFICATIONTYPE$: $HOSTALIAS$/$SERVICEDESC$ is
$SERVICESTATE$"
        }

define command{
        command_name    host-notify-by-email
        command_line    /usr/bin/printf "%b" "Notification Type:
$NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nNotification
Number: $HOSTNOTIFICATIONNUMBER$\nAddress: $HOSTADDRESS$\nInfo:
$HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" |
/usr/lib/nagios/eventhandlers/notification $HOSTNOTIFICATIONNUMBER$
localhost nagios at domain.com $CONTACTEMAIL$ "Host $HOSTSTATE$ alert for
$HOSTNAME$!" host
        }

define command{
        command_name    host-notify-by-epager
        command_line    /usr/bin/printf "%b" "Host '$HOSTALIAS$' is
$HOSTSTATE$\nInfo: $HOSTOUTPUT$\nTime: $LONGDATETIME$" | /usr/bin/sendEmail
-s localhost -f nagios at domain.com -t $CONTACTEMAIL$ -u "$NOTIFICATIONTYPE$
alert - Host $HOSTNAME$ is $HOSTSTATE$"
        }


########################################
#!/usr/bin/perl

$correctpassword = 'something';
$subject = "$ARGV[0]";
$now = `/bin/date +%s`;
chomp $now;
$commandfile = '/var/log/nagios/rw/nagios.cmd';

if ($subject =~ /Host/ ){
        ($password, $what, $junk, $junk, $junk, $junk, $junk, $host) =
split(/ /, $subject);
        ($host) = ($host) =~ /(.*)\!/;
} else {
        ($foo, $bar) = split(/\//, $subject);
        ($password, $what, $junk, $junk, $junk, $junk, $junk, $host) =
split(/ /, $foo);
        ($service) = $bar =~ /^(.*) is.*$/;
}

$password =~ s/^\s+//;
$password =~ s/\s+$//;

print "$password\t$what\t$host\t$service\n";

unless ($password =~ /$correctpassword/i) {
        print "exiting...wrong password\n";
        exit 1;
}

# ack
if ($subject =~ /Host/ ) {
        $ack =
"ACKNOWLEDGE_HOST_PROBLEM;$host;1;1;1;email;email;acknowledged through
email";
} else {
        $ack =
"ACKNOWLEDGE_SVC_PROBLEM;$host;$service;1;1;1;email;acknowledged through
email";
}

if ($what =~ /ack/i) {
        sub_print("$ack");
} else {
        print "no valid commands...exiting\n";
        exit 1;
}


sub sub_print {
        $narf=shift;
        open(F, ">$commandfile") or die "cant";
        print F "[$now] $narf\n";
        close F;
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.monitoring-lists.org/archive/users/attachments/20080915/7b9d50aa/attachment.html>
-------------- next part --------------
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
-------------- next part --------------
_______________________________________________
Nagios-users mailing list
Nagios-users at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nagios-users
::: Please include Nagios version, plugin version (-v) and OS when reporting any issue. 
::: Messages without supporting info will risk being sent to /dev/null


More information about the Users mailing list