[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