Changeset 1288

Show
Ignore:
Timestamp:
24/08/07 15:47:45 (5 years ago)
Author:
jo
Message:

Added support for "unknown" in munin-limits. Resloves #29, #43.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/server/Munin.pm.in

    r1287 r1288  
    8484        "version", "tls_certificate", "tls_private_key", "tls_pem",  
    8585        "tls_verify_certificate", "tls_verify_depth", "graph_data_size", 
    86         "colour", "graph_printf" 
     86        "colour", "graph_printf", "ok", "unknown" 
    8787    ); 
    8888 
  • trunk/server/munin-limits.in

    r1145 r1288  
    151151            my $filename = "$config->{dbdir}/$domain/$name-$clientname-$key-". 
    152152            lc substr (($client->{"$key.type"}||"GAUGE"),0,1) . ".rrd"; 
    153             my $value = sprintf "%.2f",&munin_fetch("$filename"); 
     153            my $value = &munin_fetch("$filename"); 
     154            # De-taint. 
     155            if (!defined $value) { 
     156                $value = "unknown"; 
     157            } else { 
     158                $value = sprintf "%.2f",$value; 
     159            } 
    154160 
    155161            # Some fields that are nice to have in the plugin output 
     
    166172 
    167173            logger ("value: $domain -> $name -> $clientname -> $key : $value") if $DEBUG; 
    168             if ((defined ($critical->[0]) and $value < $critical->[0]) or 
     174            if ($value eq "unknown") { 
     175                $critical->[0] ||= ""; 
     176                $critical->[1] ||= ""; 
     177                $client->{'worst'} = "UNKNOWN" if $client->{"worst"} eq "OK"; 
     178                $client->{'worstid'} = 3 if $client->{"worstid"} == 0; 
     179                $notes{$domain}{$name}{$clientname}{"$key.state"} = "unknown"; 
     180                $notes{$domain}{$name}{$clientname}{"$key.unknown"} =  
     181                (defined $client->{"$key.extinfo"} ? "unknown: " . $client->{"$key.extinfo"} : "Value is unknown."); 
     182                if (!defined ($oldnotes->{'domain'}->{$domain}->{'node'}->{$name}->{'client'}->{$clientname}->{"$key.state"}) or  
     183                        $oldnotes->{'domain'}->{$domain}->{'node'}->{$name}->{'client'}->{$clientname}->{"$key.state"} ne "unknown") 
     184                { 
     185                    $client->{'state_changed'} = 1; 
     186                } 
     187            } 
     188            elsif ((defined ($critical->[0]) and $value < $critical->[0]) or 
    169189            (defined ($critical->[1]) and $value > $critical->[1])) { 
    170190                $critical->[0] ||= ""; 
     
    189209                $warning->[0] ||= ""; 
    190210                $warning->[1] ||= ""; 
    191                 $client->{'worst'} = "WARNING" if $client->{"worst"} eq "OK"; 
    192                 $client->{'worstid'} = 1 if $client->{"worstid"} == 0
     211                $client->{'worst'} = "WARNING" if $client->{"worst"} ne "CRITICAL"; 
     212                $client->{'worstid'} = 1 if $client->{"worstid"} != 2
    193213                $notes{$domain}{$name}{$clientname}{"$key.state"} = "warning"; 
    194214                $notes{$domain}{$name}{$clientname}{"$key.warning"} =  
     
    269289    my %stats = ('critical' => [], 'warning' => [], 'unknown' => [], 'foks' => [], 'ok' => []); 
    270290 
     291    logger ("generating service message: $domain -> $name -> $clientname") if $DEBUG; 
    271292    foreach my $key (keys %{$notes{$domain}{$name}{$clientname}}) 
    272293    { 
     
    283304        elsif ($key =~ /^([^\.]+)\.unknown$/) 
    284305        { 
    285             $worst = "unknown" unless $worst
     306            $worst = "unknown" if (!$worst or $worst eq "ok")
    286307            push @{$stats{'unknown'}}, $1; 
    287308        } 
     
    433454            }  
    434455            $pipe = $config->{'contact'}->{$c}->{'pipe'}; 
     456            logger ("sending message: \"$txt\"") if ($DEBUG); 
    435457            print $pipe $txt, "\n" if (defined $pipe); 
    436458            $config->{'contact'}->{$c}->{'num_messages'}++;