<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<style>
<!--
@font-face
        {font-family:Calibri}
@font-face
        {font-family:Tahoma}
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif"}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif"}
span.EmailStyle17
        {color:black}
span.BalloonTextChar
        {font-family:"Tahoma","sans-serif"}
.MsoChpDefault
        {font-family:"Calibri","sans-serif"}
@page WordSection1
        {margin:1.0in 1.0in 1.0in 1.0in}
div.WordSection1
        {}
-->
</style>
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:black">Oh, this is so old…</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">There is a simple answer (IMO) as to why you would want to cancel and ack’d alert – a new alert for an ack’d test has been received.</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">This has been bugging me for years.  Let’s assume you ack an alert for the service “W3SVC” for 4 hours for maintenance, which you have stopped on purpose for whatever reason.  Let’s assume you also monitor services
 for SQL, Java, etc.  If one of those also fails during the 4 hours of ack time – you won’t get an alert.  There are 3 tests that can have multiple components which I would like to know if new alerts arrive while a test has been ack’d: disk, procs, & svcs. 
</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">I have a situation currently where I have to address this exact scenario.  As described I have multiple services and processes that I need to monitor, those are often ack’d but it doesn’t change the importance
 of knowing if a different process/service needs attention.  Thus, I have written the perl script below which (being just written and may not be 100% - YMMV) will monitor tests that have been ack’d and look for changes.  If there is a change that needs to be
 addressed the ack is canceled by sending a temporary green status to the host.test.  The next update from the client triggers a new alert.</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">Maybe this will help someone else too…</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">Steps:</span></p>
<p class="MsoNormal"><span style="color:black">Copy contents to ~bin/watch_ackd_alerts.pl</span></p>
<p class="MsoNormal"><span style="color:black">Create directory ~server/tmp/ACKS</span></p>
<p class="MsoNormal"><span style="color:black">Log file created in ~logs</span></p>
<p class="MsoNormal"><span style="color:black">Create the following crontab entry
</span></p>
<p class="MsoNormal"><span style="color:black">*/5 * * * * /home/xymon/bin/watch_ackd_alerts.pl > /dev/null 2>&1</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span></p>
<p class="MsoNormal"><span style="color:black">#!/usr/bin/perl</span></p>
<p class="MsoNormal"><span style="color:black"># ------------------------------------------------------------------------------------------------</span></p>
<p class="MsoNormal"><span style="color:black"># Script Name:  watch_ackd_alerts.pl</span></p>
<p class="MsoNormal"><span style="color:black"># Author:       John Rothlisberger</span></p>
<p class="MsoNormal"><span style="color:black"># Created On:   March 10, 2014</span></p>
<p class="MsoNormal"><span style="color:black"># VERSION="1.03102014.09";</span></p>
<p class="MsoNormal"><span style="color:black"># ------------------------------------------------------------------------------------------------</span></p>
<p class="MsoNormal"><span style="color:black"># Purpose:      A script to monitor ack'd alerts and watch for changes.</span></p>
<p class="MsoNormal"><span style="color:black">#               Example:  The C: drive fills up and sends out a red alert.  Knowing this will</span></p>
<p class="MsoNormal"><span style="color:black">#               take some time to fix you ack the alert for 60 minutes.  If, during that 60</span></p>
<p class="MsoNormal"><span style="color:black">#               minute window the D: drive fills up you will not be notified as the 'disk' test</span></p>
<p class="MsoNormal"><span style="color:black">#               has been acknowledged.  This script is an attempt to short circuit the ack and</span></p>
<p class="MsoNormal"><span style="color:black">#               allow for the new alert to be sent out.</span></p>
<p class="MsoNormal"><span style="color:black"># ------------------------------------------------------------------------------------------------</span></p>
<p class="MsoNormal"><span style="color:black"># Execution:    Run every 5 minutes from xymon crontab:</span></p>
<p class="MsoNormal"><span style="color:black"># */5 * * * * /home/xymon/bin/watch_ackd_alerts.pl > /dev/null 2>&1</span></p>
<p class="MsoNormal"><span style="color:black"># ------------------------------------------------------------------------------------------------</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black"># Setup COUNT and directory where to store ack info files.</span></p>
<p class="MsoNormal"><span style="color:black">$COUNT=0;</span></p>
<p class="MsoNormal"><span style="color:black">$ACKSDIR="/home/xymon/server/tmp/ACKS";</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black"># Log file</span></p>
<p class="MsoNormal"><span style="color:black">open(LOGFILE,">> /home/xymon/logs/ack_terminate.log") || die("can't open port_watch.email:  $!");</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black"># input file example</span></p>
<p class="MsoNormal"><span style="color:black"># servername|test|color|flags|lastchange|logtime|validtime|acktime|disabletime|sender|cookie|line1|ackmsg|dismsg|msg</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black"># Open input file</span></p>
<p class="MsoNormal"><span style="color:black">open ALERTS, "/home/xymon/server/bin/xymon 0 'xymondboard color=yellow,red' |" or die "Couldn't execute: $!";</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black"># Parse all active alerts</span></p>
<p class="MsoNormal"><span style="color:black">while (<ALERTS>) {</span></p>
<p class="MsoNormal"><span style="color:black">   chomp;</span></p>
<p class="MsoNormal"><span style="color:black">   @LINE=split(/\|/,$_);</span></p>
<p class="MsoNormal"><span style="color:black">   $SERVERNAME=@LINE[0];</span></p>
<p class="MsoNormal"><span style="color:black">   $TESTTYPE=@LINE[1];</span></p>
<p class="MsoNormal"><span style="color:black">   $COLOR=@LINE[2];</span></p>
<p class="MsoNormal"><span style="color:black">   $ACKTIME=@LINE[7];</span></p>
<p class="MsoNormal"><span style="color:black">   $COOKIE=@LINE[10];</span></p>
<p class="MsoNormal"><span style="color:black">   $LINE1=@LINE[11];</span></p>
<p class="MsoNormal"><span style="color:black">   $ACKMSG=@LINE[12];</span></p>
<p class="MsoNormal"><span style="color:black">   $DISMSG=@LINE[13];</span></p>
<p class="MsoNormal"><span style="color:black">   $MSG=@LINE[14];</span></p>
<p class="MsoNormal"><span style="color:black"># Skip all alerts except disk, procs, and svcs (others are not tested)</span></p>
<p class="MsoNormal"><span style="color:black">   next if ((! $TESTTYPE == "disk") || (! $TESTTYPE == "procs") || (! $TESTTYPE == "svcs"));</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black"># If the alert has been ack'd we want to watch for any changes.</span></p>
<p class="MsoNormal"><span style="color:black">   if ( $ACKTIME > 0) {</span></p>
<p class="MsoNormal"><span style="color:black">      $COUNT+=1;</span></p>
<p class="MsoNormal"><span style="color:black">      $REDS=0;</span></p>
<p class="MsoNormal"><span style="color:black">      $YELLOWS=0;</span></p>
<p class="MsoNormal"><span style="color:black">      $REDS_CMP=0;</span></p>
<p class="MsoNormal"><span style="color:black">      $YELLOWS_CMP=0;</span></p>
<p class="MsoNormal"><span style="color:black">      $NEED_COMP=0;</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">      print LOGFILE "-------------------------------------------------------------------\n";</span></p>
<p class="MsoNormal"><span style="color:black">      print LOGFILE "SERVERNAME: $SERVERNAME\n";</span></p>
<p class="MsoNormal"><span style="color:black">      print LOGFILE "TESTTYPE: $TESTTYPE\n";</span></p>
<p class="MsoNormal"><span style="color:black">      print LOGFILE "COLOR: $COLOR\n";</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black"># If this is a new ack'd alert we will create a static file that holds current test state.</span></p>
<p class="MsoNormal"><span style="color:black"># We will use this file to decide if there have been changes to what has been ack'd.</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">      if (! -e "${ACKSDIR}/${SERVERNAME}${TESTTYPE}${COLOR}${ACKTIME}" ) {</span></p>
<p class="MsoNormal"><span style="color:black">         open DETAILS, "/home/xymon/server/bin/xymon 0 'xymondlog ${SERVERNAME}.${TESTTYPE}' |" or die "Couldn't execute: $!";</span></p>
<p class="MsoNormal"><span style="color:black">         open OUTFILE, ">${ACKSDIR}/${SERVERNAME}${TESTTYPE}${COLOR}${ACKTIME}" or die "Couldn't execute: $!";</span></p>
<p class="MsoNormal"><span style="color:black">         while (<DETAILS>) {</span></p>
<p class="MsoNormal"><span style="color:black">            chomp;</span></p>
<p class="MsoNormal"><span style="color:black">            if ( $_ =~ /^&/ ) {</span></p>
<p class="MsoNormal"><span style="color:black">               $_ =~ s/\&//;</span></p>
<p class="MsoNormal"><span style="color:black">               @DETLINE=split(/ /,$_);</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black"># Change colors to numbers red=2 yellow=1 anything else = 0</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">               if ( "$DETLINE[0]" eq "red" ) {</span></p>
<p class="MsoNormal"><span style="color:black">                  $COL_VALUE = "2";</span></p>
<p class="MsoNormal"><span style="color:black">               } elsif ( "$DETLINE[0]" eq "yellow" ) {</span></p>
<p class="MsoNormal"><span style="color:black">                  $COL_VALUE = "1";</span></p>
<p class="MsoNormal"><span style="color:black">               } else {</span></p>
<p class="MsoNormal"><span style="color:black">                  $COL_VALUE = "0";</span></p>
<p class="MsoNormal"><span style="color:black">               }</span></p>
<p class="MsoNormal"><span style="color:black"># Create the status file which will be used on subsequent runs.</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">               print OUTFILE "${COL_VALUE}:${DETLINE[1]}\n";</span></p>
<p class="MsoNormal"><span style="color:black">               print LOGFILE "DATE: ${COL_VALUE}:${DETLINE[1]}\n";</span></p>
<p class="MsoNormal"><span style="color:black">            }</span></p>
<p class="MsoNormal"><span style="color:black">         }</span></p>
<p class="MsoNormal"><span style="color:black">         close OUTFILE;</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black"># We have already recorded the initial state of the test and saved it to a file.</span></p>
<p class="MsoNormal"><span style="color:black"># Now we will check new status output with that file to see if the alerts have changed.</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">      } else {</span></p>
<p class="MsoNormal"><span style="color:black">         open DETAILS, "/home/xymon/server/bin/xymon 0 'xymondlog ${SERVERNAME}.${TESTTYPE}' |" or die "Couldn't execute: $!";</span></p>
<p class="MsoNormal"><span style="color:black">         while (<DETAILS>) {</span></p>
<p class="MsoNormal"><span style="color:black">            chomp;</span></p>
<p class="MsoNormal"><span style="color:black">            if ( $_ =~ /^&/ ) {</span></p>
<p class="MsoNormal"><span style="color:black">               $_ =~ s/\&//;</span></p>
<p class="MsoNormal"><span style="color:black">               @DETLINE=split(/ /,$_);</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black"># Change colors to numbers red=2 yellow=1 anything else = 0</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">               if ( "$DETLINE[0]" eq "red" ) {</span></p>
<p class="MsoNormal"><span style="color:black">                  $COL_VALUE = "2";</span></p>
<p class="MsoNormal"><span style="color:black">               } elsif ( "$DETLINE[0]" eq "yellow" ) {</span></p>
<p class="MsoNormal"><span style="color:black">                  $COL_VALUE = "1";</span></p>
<p class="MsoNormal"><span style="color:black">               } else {</span></p>
<p class="MsoNormal"><span style="color:black">                  $COL_VALUE = "0";</span></p>
<p class="MsoNormal"><span style="color:black">               }</span></p>
<p class="MsoNormal"><span style="color:black">               push (@COMP_contents, "${COL_VALUE}:${DETLINE[1]}");</span></p>
<p class="MsoNormal"><span style="color:black">            }</span></p>
<p class="MsoNormal"><span style="color:black">         }</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black"># Get the initial ack file that was created.</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">         open INITFILE, "<${ACKSDIR}/${SERVERNAME}${TESTTYPE}${COLOR}${ACKTIME}" or die "Couldn't execute: $!";</span></p>
<p class="MsoNormal"><span style="color:black">         while (<INITFILE>) {</span></p>
<p class="MsoNormal"><span style="color:black">            chomp;</span></p>
<p class="MsoNormal"><span style="color:black">            push (@INITFILE_contents, "$_");</span></p>
<p class="MsoNormal"><span style="color:black">         }</span></p>
<p class="MsoNormal"><span style="color:black">         close INITFILE;</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black"># Create a hash that contains the initial ack file.</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">         %INITF = map(($_,1),@INITFILE_contents);</span></p>
<p class="MsoNormal"><span style="color:black">         foreach (@COMP_contents) {</span></p>
<p class="MsoNormal"><span style="color:black">            if ($INITF{$_}) {</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black"># No change to the alert - nothing to do.</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">               print LOGFILE "Alert hasn't changed: $_\n";</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">            } else {</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black"># Alert has changed in some form.</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">               print LOGFILE "Alert has changed: $_\n";</span></p>
<p class="MsoNormal"><span style="color:black">               @CURRENT=split(/:/,$_);</span></p>
<p class="MsoNormal"><span style="color:black">               $CUR_COLOR=$CURRENT[0];</span></p>
<p class="MsoNormal"><span style="color:black">               $CUR_TEST=$CURRENT[1];</span></p>
<p class="MsoNormal"><span style="color:black">               @ACKD_EVENT=grep (/:${CUR_TEST}/, @INITFILE_contents);</span></p>
<p class="MsoNormal"><span style="color:black">               @ACK_EVENT=split(/:/,$ACKD_EVENT[0]);</span></p>
<p class="MsoNormal"><span style="color:black">               $ACK_COLOR=$ACKD_EVENT[0];</span></p>
<p class="MsoNormal"><span style="color:black">               $ACK_TEST=$ACKD_EVENT[1];</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black"># Compare the current alert color with that which was saved initially.</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">               if ( $CUR_COLOR < $ACK_EVENT[0] ) {</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black"># New color is lower than initial color - leave ack alone.</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">                  print LOGFILE "NO ACTION NEEDED (new level lower than ack level).\n";</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">               } elsif ( $CUR_COLOR > $ACK_EVENT[0] ) {</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black"># New color is greater than initial ack color, dump ack so new alerts can be sent.</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">                  if ( $ACK_COLOR == "" ) {</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black"># New alert not previously detected (different service, process, or disk alerting)</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">                     print LOGFILE "ACK COLOR $ACK_COLOR\n";</span></p>
<p class="MsoNormal"><span style="color:black">                     print LOGFILE "NEW ALERT - DISABLE ACK AND SEND NEW ALERT.\n";</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black"># Reset the server.test status to green.  Next update will reset the alert condition effectivly</span></p>
<p class="MsoNormal"><span style="color:black"># canceling the acknowledge.</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">                     open RESET, "/home/xymon/server/bin/xymon 0 'status+10 ${SERVERNAME}.${TESTTYPE} green Ack Reset New Alert Rcvd.' |" or die "Couldn't execute: $!";</span></p>
<p class="MsoNormal"><span style="color:black">                     close RESET;</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">                  } else {</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black"># Level of original alert has upgraded (typically yellow->red)</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">                     print LOGFILE "ACK COLOR $ACK_COLOR\n";</span></p>
<p class="MsoNormal"><span style="color:black">                     print LOGFILE "OLD ALERT - DISABLE ACK AND SEND NEW ALERT.\n";</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black"># Reset the server.test status to green.  Next update will reset the alert condition effectivly</span></p>
<p class="MsoNormal"><span style="color:black"># canceling the acknowledge.</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black">                     open RESET, "/home/xymon/server/bin/xymon 0 'status+1 ${SERVERNAME}.${TESTTYPE} green Ack Reset Alert Level Changed.' |" or die "Couldn't execute: $!";</span></p>
<p class="MsoNormal"><span style="color:black">                     close RESET;</span></p>
<p class="MsoNormal"><span style="color:black">                  }</span></p>
<p class="MsoNormal"><span style="color:black">               } else {</span></p>
<p class="MsoNormal"><span style="color:black"># Nothing to do here.</span></p>
<p class="MsoNormal"><span style="color:black">                  print LOGFILE "NO ACTION NEEDED (new level equals ack level).\n";</span></p>
<p class="MsoNormal"><span style="color:black">               }</span></p>
<p class="MsoNormal"><span style="color:black">            }</span></p>
<p class="MsoNormal"><span style="color:black">         }</span></p>
<p class="MsoNormal"><span style="color:black">      }</span></p>
<p class="MsoNormal"><span style="color:black">   }</span></p>
<p class="MsoNormal"><span style="color:black">}</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black"># When there are no ack'd alerts clean out the ACK status directory.</span></p>
<p class="MsoNormal"><span style="color:black">if ( $COUNT == 0 ) {</span></p>
<p class="MsoNormal"><span style="color:black">   unlink glob "${ACKSDIR}/*";</span></p>
<p class="MsoNormal"><span style="color:black">}</span></p>
<p class="MsoNormal"><span style="color:black">------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<p class="MsoNormal" style=""><span style="font-family:"Arial","sans-serif"; color:#1F497D">Thanks,
</span></p>
<p class="MsoNormal" style=""><span style="font-family:"Arial","sans-serif"; color:#1F497D">John
</span></p>
<p class="MsoNormal"><span style="font-family:"Arial","sans-serif"; color:#1F497D">Upcoming PTO:</span></p>
<p class="MsoNormal"><span style="font-family:"Arial","sans-serif"; color:#1F497D">(none)</span></p>
<p class="MsoNormal"><span style="font-family:"Arial","sans-serif"; color:#1F497D"> </span></p>
<p class="MsoNormal" style=""><span style="font-family:"Arial","sans-serif"; color:#1F497D">_____________________________________________________________________
</span></p>
<p class="MsoNormal"><span style="font-family:"Arial","sans-serif"; color:#1F497D">John Rothlisberger</span></p>
<p class="MsoNormal"><span style="font-family:"Arial","sans-serif"; color:#1F497D">IT Strategy, Infrastructure & Security - Technology Growth Platform</span></p>
<p class="MsoNormal"><span style="font-family:"Arial","sans-serif"; color:#1F497D">TGP for Business Process Outsourcing</span></p>
<p class="MsoNormal"><span style="font-family:"Arial","sans-serif"; color:#1F497D">Accenture</span></p>
<p class="MsoNormal"><span style="font-family:"Arial","sans-serif"; color:#1F497D">312.693.3136 office<b></b></span></p>
<p class="MsoNormal"><span style="font-family:"Arial","sans-serif"; color:#1F497D">_____________________________________________________________________
</span></p>
<p class="MsoNormal"><span style="color:black"> </span></p>
<div style="border:none; border-left:solid blue 1.5pt; padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none; border-top:solid #B5C4DF 1.0pt; padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt; font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt; font-family:"Tahoma","sans-serif""> Ryan Novosielski [mailto:novosirj@umdnj.edu]
<br>
<b>Sent:</b> Friday, October 22, 2010 5:23 PM<br>
<b>To:</b> xymon@xymon.com<br>
<b>Cc:</b> xymon@xymon.com<br>
<b>Subject:</b> Re: [xymon] canceling acknowledgements</span></p>
</div>
</div>
<p class="MsoNormal"> </p>
<p class="MsoNormal">I'm guessing, but I don't know, that these two things would work:<br>
<br>
1) Remove the file created on the server that contains the ack notice.<br>
2) Ack the same test as the same person for 1 minute or something similar.<br>
<br>
I was thinking about this same one the other day. The conclusion I came to was "Why on earth would I want to do that?" The only reason I could think of was a case of ack'd by accident.<br>
<br>
----- Original Message -----<br>
From: Larry Barber <<a href="mailto:lebarber@gmail.com">lebarber@gmail.com</a>><br>
Date: Friday, October 22, 2010 9:21 pm<br>
Subject: [xymon] canceling acknowledgements<br>
To: <a href="mailto:xymon@xymon.com">xymon@xymon.com</a><br>
<br>
<span style="font-size:10.5pt; background:#F5F8F0">> </span>Is there some way to cancel an 'ack' after it has been issued?<br>
<span style="font-size:10.5pt; background:#F5F8F0">> </span><br>
<span style="font-size:10.5pt; background:#F5F8F0">> </span>Thanks,<br>
<span style="font-size:10.5pt; background:#F5F8F0">> </span>Larry Barber<br>
<br>
<br>
---- _  _ _  _ ___  _  _  _<br>
|Y#| |  | |\/| |  \ |\ |  | |Ryan Novosielski - Sr. Systems Programmer<br>
|$&| |__| |  | |__/ | \| _| <a href="mailto:|novosirj@umdnj.edu">|novosirj@umdnj.edu</a> - 973/972.0922 (2-0922)<br>
\__/ Univ. of Med. and Dent.|IST/CST-Academic Svcs. - ADMC 450, Newark </p>
</div>
</div>
<br>
<hr>
<font face="Arial" color="Gray" size="1"><br>
This message is for the designated recipient only and may contain privileged, proprietary, or otherwise confidential information. If you have received it in error, please notify the sender immediately and delete the original. Any other use of the e-mail by
 you is prohibited. Where allowed by local law, electronic communications with Accenture and its affiliates, including e-mail and instant messaging (including content), may be scanned by our systems for the purposes of information security and assessment of
 internal compliance with Accenture policy. <br>
______________________________________________________________________________________<br>
<br>
www.accenture.com<br>
</font>
</body>
</html>