1
Index: munin-1.2.6/server/munin-limits.in
2
===================================================================
3
--- munin-1.2.6.orig/server/munin-limits.in 2008-02-18 02:00:00.000000000 +0100
4
+++ munin-1.2.6/server/munin-limits.in 2009-01-15 23:34:08.000000000 +0100
9
- ($warning, $critical) = get_limits ($client, $domain, $name, $clientname, $key);
11
+ ($warning, $critical, $unknown_limit) = get_limits ($client, $domain, $name, $clientname, $key);
13
my $filename = "$config->{dbdir}/$domain/$name-$clientname-$key-".
14
lc substr (($client->{"$key.type"}||"GAUGE"),0,1) . ".rrd";
16
$client->{'worstid'} = 3 if $client->{"worstid"} == 0;
17
$notes{$domain}{$name}{$clientname}{"$key.state"} = "unknown";
18
$notes{$domain}{$name}{$clientname}{"$key.unknown"} =
19
- (defined $client->{"$key.extinfo"} ? "unknown: " . $client->{"$key.extinfo"} : "Value is unknown.");
20
- if (!defined ($oldnotes->{'domain'}->{$domain}->{'node'}->{$name}->{'client'}->{$clientname}->{"$key.state"}) or
21
- $oldnotes->{'domain'}->{$domain}->{'node'}->{$name}->{'client'}->{$clientname}->{"$key.state"} ne "unknown")
22
+ (defined $client->{"$key.extinfo"} ? "unknown: " . $client->{"$key.extinfo"} : "Value is unknown.");
23
+ $notes{$domain}{$name}{$clientname}{"$key.notify_countdown"} =
24
+ defined($oldnotes->{'domain'}->{$domain}->{'node'}->{$name}->{'client'}->{$clientname}->{"$key.notify_countdown"})
25
+ ? $oldnotes->{'domain'}->{$domain}->{'node'}->{$name}->{'client'}->{$clientname}->{"$key.notify_countdown"}
28
+ # Check to see if the limit has been reached for consecutive UNKNOWN values.
29
+ # If so, then indicate that there's been a state change.
30
+ if ($notes{$domain}{$name}{$clientname}{"$key.notify_countdown"} > 0)
32
- $client->{'state_changed'} = 1;
34
+ $notes{$domain}{$name}{$clientname}{"$key.notify_countdown"} -= 1;
35
+ if ($notes{$domain}{$name}{$clientname}{"$key.notify_countdown"} == 0)
37
+ $client->{'state_changed'} = 1;
41
elsif ((defined ($critical->[0]) and $value < $critical->[0]) or
42
(defined ($critical->[1]) and $value > $critical->[1])) {
45
$client->{'state_changed'} = 1;
49
elsif (defined ($oldnotes->{'domain'}->{$domain}->{'node'}->{$name}->{'client'}->{$clientname}->{"$key.state"}) or
52
$notes{$domain}{$name}{$clientname}{"$key.ok"} = "OK";
53
- $client->{'state_changed'} = 1;
54
+ if ( !($oldnotes->{'domain'}->{$domain}->{'node'}->{$name}->{'client'}->{$clientname}->{"$key.state"} eq "unknown" and
55
+ $oldnotes->{'domain'}->{$domain}->{'node'}->{$name}->{'client'}->{$clientname}->{"$key.notify_countdown"} > 0))
57
+ $client->{'state_changed'} = 1;
64
my @critical = (undef, undef);
65
my @warning = (undef, undef);
66
+ my $unknown_limit = 3;
67
if (defined $client->{"$key.critical"} and
68
$client->{"$key.critical"} =~ /^\s*([-+\d.]*):([-+\d.]*)\s*$/)
72
logger ("processing warning: $domain -> $name -> $clientname -> $key -> $warning[0] : $warning[1]") if $DEBUG;
74
- return (\@warning, \@critical);
76
+ if (defined $client->{"$key.unknown_limit"} and
77
+ $client->{"$key.unknown_limit"} =~ /^\s*(\d+)\s*$/)
79
+ $unknown_limit = $1 if defined $1;
80
+ logger ("processing unknown: $domain -> $name -> $clientname -> $key -> $unknown_limit") if $DEBUG;
83
+ return (\@warning, \@critical, $unknown_limit);
86
sub generate_service_message {
87
Index: munin-1.2.6/server/Munin.pm.in
88
===================================================================
89
--- munin-1.2.6.orig/server/Munin.pm.in 2009-01-15 23:34:43.000000000 +0100
90
+++ munin-1.2.6/server/Munin.pm.in 2009-01-15 23:35:16.000000000 +0100
92
"text", "command", "contact", "contacts", "max_messages",
93
"always_send", "notify_alias", "line", "state", "graph_period",
94
"cgiurl_graph", "cgiurl", "service_order", "category_order",
95
- "version", "colour", "ok", "unknown"
96
+ "version", "colour", "ok", "unknown", "unknown_limit", "notify_countdown"
99
my %legal_expanded = map { $_ => 1 } @legal;