From 3c84e71e76e590528e0084589ae8eadf54848b00 Mon Sep 17 00:00:00 2001 From: Peter Palfrader Date: Wed, 27 Jul 2016 10:33:52 +0200 Subject: [PATCH] dsa-check-zone-rrsig-expiration-many: sort zone details by state --- .../dsa-check-zone-rrsig-expiration-many | 53 +++++++++---------- dsa-nagios-checks/debian/changelog | 3 +- 2 files changed, 27 insertions(+), 29 deletions(-) diff --git a/dsa-nagios-checks/checks/dsa-check-zone-rrsig-expiration-many b/dsa-nagios-checks/checks/dsa-check-zone-rrsig-expiration-many index 445dded..ec99484 100755 --- a/dsa-nagios-checks/checks/dsa-check-zone-rrsig-expiration-many +++ b/dsa-nagios-checks/checks/dsa-check-zone-rrsig-expiration-many @@ -102,13 +102,9 @@ die ($USAGE) unless (scalar @ARGV == 1); my $INDIR = shift; -my $count = - { 'ok' => [], - 'warn' => [], - 'critical' => [], - 'unknown' => [], - 'unsigned' => [], - }; +my $states = [qw{critical warn unknown ok unsigned}]; +my $count = { map { $_ => [] } @$states }; +my $details = { map { $_ => [] } @$states }; my %dnsseczones; @@ -135,7 +131,8 @@ for my $file (sort {$a cmp $b} (readdir INDIR)) { $dnsseczones{$file} = {}; $dnsseczones{$file}->{'initial_refs'} = $initial_refs if defined $initial_refs; } else { - push @{$count->{'unsigned'}}, $file; + push @{$count ->{'unsigned'}}, $file; + push @{$details->{'unsigned'}}, "$file: marked unsigned or undelegated.\n"; }; } closedir(INDIR); @@ -154,8 +151,6 @@ if (defined $params->{'geozonedir'}) { closedir(INDIR); } -my @details; - my %threads; for my $zone (sort {$a cmp $b} keys %dnsseczones) { die "Duplicate zone $zone?\n" if defined $threads{$zone}; @@ -171,12 +166,13 @@ while (time - $begin <= $params->{timeout}) { my ($res, $det) = $threads{$zone}->join(); - push @details, @$det; + my $type = ($res == 0) ? 'ok' : + ($res == 1) ? 'warn' : + ($res == 2) ? 'critical' : + 'unknown'; - if ($res == 0) { push @{$count->{'ok'}}, $zone; } - elsif ($res == 1) { push @{$count->{'warn'}}, $zone; } - elsif ($res == 2) { push @{$count->{'critical'}}, $zone; } - else { push @{$count->{'unknown'}}, $zone; }; + push @{$details->{$type}}, @$det; + push @{$count ->{$type}}, $zone; delete $threads{$zone}; } last if scalar keys %threads == 0; @@ -184,36 +180,37 @@ while (time - $begin <= $params->{timeout}) { sleep 1; } for my $zone (sort {$a cmp $b} keys %threads) { - push @{$count->{'warn'}}, $zone; - push @details, "$zone: timeout during check\n"; + push @{$count ->{'warn'}}, $zone; + push @{$details->{'warn'}}, "$zone: timeout during check\n"; $threads{$zone}->kill('KILL')->detach(); } -for my $k (keys %$count) { - @{$count->{$k}} = sort {$a cmp $b} @{$count->{$k}}; -} - -my $exit; +my $exit = 0; my %state_mapping = ( 'unknown' => 255, 'critical' => 2, 'warn' => 1, 'ok' => 0 ); -for my $state (sort {$state_mapping{$b} <=> $state_mapping{$a}} keys %state_mapping) { +for my $state (@$states) { + @{$count->{$state}} = sort {$a cmp $b} @{$count->{$state}}; + @{$details->{$state}} = sort {$a cmp $b} @{$details->{$state}}; + if (scalar @{$count->{$state}}) { printf "%s: %d", uc($state), scalar @{$count->{$state}}; if ($state_mapping{$state} > 0) { print ": ", join(', ', @{$count->{$state}}); }; print "; "; - $exit = $state_mapping{$state} unless defined $exit; + $exit = $state_mapping{$state} if ($state_mapping{$state} > $exit); }; }; printf "unsigned: %d", scalar @{$count->{'unsigned'}}; print "\n"; -for (@details) { - s/\|/;/g; - print $_; +for my $state (@$states) { + for (@{$details->{$state}}) { + s/\|/;/g; + print $_; + } } -exit ((defined $exit) ? $exit : 0); +exit $exit; diff --git a/dsa-nagios-checks/debian/changelog b/dsa-nagios-checks/debian/changelog index 8ec8612..d3b1647 100644 --- a/dsa-nagios-checks/debian/changelog +++ b/dsa-nagios-checks/debian/changelog @@ -34,6 +34,7 @@ dsa-nagios-checks (108+XXXX) UNRELEASED; urgency=medium in zonefiles. This will skip it being checked. * dsa-check-zone-rrsig-expiration-many: remove | (which starts performance data) in detail output. + * dsa-check-zone-rrsig-expiration-many: sort zone details by state. [ Tollef Fog Heen ] * dsa-update-unowned-file-status: ignore fdescfs, used for /dev/fd on @@ -46,7 +47,7 @@ dsa-nagios-checks (108+XXXX) UNRELEASED; urgency=medium * Add dsa-check-hpssacli, replaces hpacucli for new hosts. * dsa-check-hpssacli: accept 12.0Gbps as transfer speed for SAS - -- Peter Palfrader Wed, 27 Jul 2016 10:17:59 +0200 + -- Peter Palfrader Wed, 27 Jul 2016 10:31:06 +0200 dsa-nagios-checks (108) unstable; urgency=medium -- 2.20.1