[prev in list] [next in list] [prev in thread] [next in thread] 

List:       mon
Subject:    redefine time interval when an alert is triggered.
From:       JeanLuc <jlchasse () cri74 ! org>
Date:       2001-05-17 9:28:31
[Download RAW message or body]


I have created a patch in oder to add an option in mon.
This patch adds the option "alertintervalcheck" in the block "period"
for a group/service in the mon.cf file.
This option redefines a different time interval when an alert is
triggered.
which can be used to perform more test before alert is ended
It can be usefull to check a service more often than the "interval"
value.

--------------------------------------------------------

--- mon.orig    Tue May 15 15:07:19 2001
+++ mon Tue May 15 17:22:24 2001
@@ -374,7 +374,32 @@

                my $sref = \%{$watch{$group}->{$service}};

-               my $t = $tm - $lasttm;
+               # Redefine the value of interval if a service is down
+               # In the configuration file use : alertintervalcheck
+               # CHASSERIAU JeanLuc <jlchasse@cri74.org>i
+               #
+               # Description of the flag : _alert_interval_check_flag
+               # 0 -> alertintervalcheck undefined
+               # 1 -> alertintervalcheck defined but interval unchanged

+               # 2 -> alertintervalcheck defined and interval changed
+
+               if( ($sref->{"_op_status"} == $STAT_FAIL) &&
+                   ($sref->{"_alert_interval_check_flag"} == 1) )
+               {
+                       syslog('info',"Change value of interval to
".$sref->{"alertintervalcheck"}." for ".$group."/".$service);
+                       $sref->{"_old_interval"} = $sref->{"interval"};
+                       $sref->{"interval"} =
$sref->{"alertintervalcheck"};
+                       $sref->{"_alert_interval_check_flag"} = 2;
+               }
+               if( ($sref->{"_op_status"} == $STAT_OK) &&
+                   ($sref->{"_alert_interval_check_flag"} == 2) )
+               {
+                       syslog('info',"Change value of interval to old
".$sref->{"_old_interval"}." for ".$group."/".$service);
+                       $sref->{"interval"} = $sref->{"_old_interval"};
+                       $sref->{"_alert_interval_check_flag"} = 1;
+               }
+
+               my $t = $tm - $lasttm;
                $t = 1 if ($t <= 0);

                #
@@ -1088,6 +1113,11 @@
            $sref = \%{$new_watch{$watchgroup}->{$service}};
            $sref->{"service"} = $args;
            $sref->{"interval"} = undef;
+
+           $sref->{"alertintervalcheck"} = undef;
+           $sref->{"_alert_interval_check_flag"} = 0;
+           $sref->{"_old_interval"} = undef;
+
            $sref->{"randskew"} = 0;
            $sref->{"dep_behavior"} = $DEP_BEHAVIOR;
            $sref->{"exclude_period"} = "";
@@ -1190,6 +1220,11 @@
        {
            return "cf error: need to specify a period for alertafter,
line $line_num";
        }
+
+       elsif ($var eq "alertintervalcheck" && !$period)
+       {
+           return "cf error: need to specify a period for
alertintervalcheck, line $line_num";
+       }

        if ($var eq "alert")
        {
@@ -1220,6 +1255,17 @@
                }
            }

+           elsif ($var eq "alertintervalcheck")
+           {
+               if (!($args = dhmstos ($args))) {
+                       close (CFG);
+                       return "cf error: invalid interval '$args'
(syntax: alertintervalcheck = {positive number}{smhd}), line $line_num";

+               }
+               $sref->{"alertintervalcheck"} = $args;
+               $sref->{"_alert_interval_check_flag"} = 1;
+               $sref->{"_old_interval"} = 0;
+           }
+
            elsif ($var eq "traptimeout")
            {
                if (!($args = dhmstos ($args))) {
@@ -1381,6 +1427,7 @@
 #
 sub dhmstos {
     my ($str) = @_;
+    $str = lc($str); # LowerCase
     my ($s);

     if ($str =~ /^\s*(\d+(?:\.\d+)?)([dhms])\s*$/i) {

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic