From 3ae5405f55d72ec12ac0921e1348864f54ec26b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20Beaupr=C3=A9?= Date: Fri, 17 Apr 2015 16:27:48 -0400 Subject: refactor rdiff check to isolate in a reusable function --- files/checkbackups.pl | 62 ++++++++++++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 28 deletions(-) diff --git a/files/checkbackups.pl b/files/checkbackups.pl index dba2b4a..fb2b7a1 100755 --- a/files/checkbackups.pl +++ b/files/checkbackups.pl @@ -52,6 +52,39 @@ EOF exit(); } +sub CheckRdiffBackups { + my ($dir, $subdir, $optv) = @_; + $flag="$dir/$subdir/rdiff-backup-data/backup.log"; + $type="rdiff"; + if (open(FLAG, $flag)) { + while () { + if (/StartTime ([0-9]*).[0-9]* \((.*)\)/) { + $last_bak = $1; + $extra_msg = ' [backup.log]'; + $opt_v && print STDERR "found timestamp $1 ($2) in backup.log\n"; + } + } + if (!$last_bak) { + $message = "cannot parse backup.log for a valid timestamp"; + next; + } + } else { + $opt_v && print STDERR "cannot open backup.log\n"; + } + close(FLAG); + foreach my $vserver_dir (@vserver_dirs) { + $vsdir = "$dir/${subdir}$vserver_dir"; + if (opendir(DIR, $vsdir)) { + @vservers = grep { /^[^\.]/ && -d "$vsdir/$_" } readdir(DIR); + $opt_v && print STDERR "found vservers $vsdir: @vservers\n"; + closedir DIR; + } else { + $opt_v && print STDERR "no vserver in $vsdir\n"; + } + } + return ($message, $extra_msg, $last_bak); +} + my $backupdir= $opt_d; my $crit = $opt_c; my $warn = $opt_w; @@ -84,34 +117,7 @@ foreach $host (@hosts) { # XXX: the backup type should be part of the machine registry my $last_bak; if (-d "$dir/rdiff-backup") { - $flag="$dir/rdiff-backup/rdiff-backup-data/backup.log"; - $type="rdiff"; - if (open(FLAG, $flag)) { - while () { - if (/StartTime ([0-9]*).[0-9]* \((.*)\)/) { - $last_bak = $1; - $extra_msg = ' [backup.log]'; - $opt_v && print STDERR "found timestamp $1 ($2) in backup.log\n"; - } - } - if (!$last_bak) { - $message = "cannot parse backup.log for a valid timestamp"; - next; - } - } else { - $opt_v && print STDERR "cannot open backup.log\n"; - } - close(FLAG); - foreach my $vserver_dir (@vserver_dirs) { - $vsdir = "$dir/rdiff-backup$vserver_dir"; - if (opendir(DIR, $vsdir)) { - @vservers = grep { /^[^\.]/ && -d "$vsdir/$_" } readdir(DIR); - $opt_v && print STDERR "found vservers $vsdir: @vservers\n"; - closedir DIR; - } else { - $opt_v && print STDERR "no vserver in $vsdir\n"; - } - } + my ($message, $extra_msg, $last_bak) = CheckRdiffBackups($dir, 'rdiff-backup', $opt_v); } elsif (-d "$dir/dump") { # XXX: this doesn't check backup consistency $flag="$dir/dump/" . `ls -tr $dir/dump | tail -1`; -- cgit v1.2.3 From 27b1b73d39009c17d17bae728d8634d67fd82f3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20Beaupr=C3=A9?= Date: Fri, 17 Apr 2015 16:54:36 -0400 Subject: refactor checkbackups.pl further split everything in smaller functions again remove the $crit and $warn variables, refer to $opt_w and $opt_c since they are global anyways --- files/checkbackups.pl | 91 +++++++++++++++++++++++++++------------------------ 1 file changed, 49 insertions(+), 42 deletions(-) diff --git a/files/checkbackups.pl b/files/checkbackups.pl index fb2b7a1..2473218 100755 --- a/files/checkbackups.pl +++ b/files/checkbackups.pl @@ -52,10 +52,10 @@ EOF exit(); } -sub CheckRdiffBackups { - my ($dir, $subdir, $optv) = @_; - $flag="$dir/$subdir/rdiff-backup-data/backup.log"; - $type="rdiff"; +sub check_rdiff { + my ($host, $dir, $subdir, $optv) = @_; + my $flag="$dir/$subdir/rdiff-backup-data/backup.log"; + my $extra_msg = ''; if (open(FLAG, $flag)) { while () { if (/StartTime ([0-9]*).[0-9]* \((.*)\)/) { @@ -72,6 +72,8 @@ sub CheckRdiffBackups { $opt_v && print STDERR "cannot open backup.log\n"; } close(FLAG); + ($state, $delta) = check_age($stats[9]); + print_status($host, $state, "$delta seconds old$extra_msg"); foreach my $vserver_dir (@vserver_dirs) { $vsdir = "$dir/${subdir}$vserver_dir"; if (opendir(DIR, $vsdir)) { @@ -82,12 +84,45 @@ sub CheckRdiffBackups { $opt_v && print STDERR "no vserver in $vsdir\n"; } } - return ($message, $extra_msg, $last_bak); + my @dom_sufx = split(/\./, $host); + my $dom_sufx = join('.', @dom_sufx[1,-1]); + foreach my $vserver (@vservers) { + print_status("$vserver.$dom_sufx", $state, "$delta seconds old$extra_msg, same as parent: $host"); + } +} + +sub check_age { + my ($last_bak) = @_; + my $t = time(); + my $delta = $t - $last_bak; + if ($delta > $opt_c) { + $state = $STATE_CRITICAL; + } elsif ($delta > $opt_w) { + $state = $STATE_WARNING; + } elsif ($delta >= 0) { + $state = $STATE_OK; + } + return ($state, $delta); +} + +sub print_status { + my ($host, $state, $message) = @_; + printf "$host\tbackups\t$state\t$message\n"; +} + +sub check_flag { + my ($host, $flag) = @_; + my @stats = stat($flag); + if (not @stats) { + print_status($host, $state, "cannot stat flag $flag"); + } + else { + ($state, $delta) = check_age($stats[9]); + print_status($host, $state, "$delta seconds old"); + } } my $backupdir= $opt_d; -my $crit = $opt_c; -my $warn = $opt_w; my @hosts; if (defined($opt_o)) { @@ -98,7 +133,7 @@ if (defined($opt_o)) { } chdir($backupdir); -my ($state, $message, @vservers, $host); +my ($delta, $state, $message, @vservers, $host); foreach $host (@hosts) { chomp($host); if ($opt_o) { @@ -107,8 +142,6 @@ foreach $host (@hosts) { $dir = $host; } my $flag=""; - my $type="unknown"; - my $extra_msg=""; @vservers = (); $state = $STATE_UNKNOWN; $message = "???"; @@ -117,51 +150,25 @@ foreach $host (@hosts) { # XXX: the backup type should be part of the machine registry my $last_bak; if (-d "$dir/rdiff-backup") { - my ($message, $extra_msg, $last_bak) = CheckRdiffBackups($dir, 'rdiff-backup', $opt_v); + check_rdiff($host, $dir, 'rdiff-backup', $opt_v); } elsif (-d "$dir/dump") { # XXX: this doesn't check backup consistency $flag="$dir/dump/" . `ls -tr $dir/dump | tail -1`; chomp($flag); - $type="dump"; + check_flag($host, $flag); } elsif (-d "$dir/dup") { # XXX: this doesn't check backup consistency $flag="$dir/dup/" . `ls -tr $dir/dup | tail -1`; chomp($flag); - $type="dup"; + check_flag($host, $flag); } elsif (-r "$dir/rsync.log") { # XXX: this doesn't check backup consistency $flag="$dir/rsync.log"; - $type="rsync"; + check_flag($host, $flag); } else { - $message = "unknown system"; - next; + print_status($host, $state, 'unknown system'); } - if (!defined($last_bak)) { - my @stats = stat($flag); - if (not @stats) { - $message = "cannot stat flag $flag"; - next; - } - $last_bak = $stats[9]; - } - my $t = time(); - my $delta = $t - $last_bak; - if ($delta > $crit) { - $state = $STATE_CRITICAL; - } elsif ($delta > $warn) { - $state = $STATE_WARNING; - } elsif ($delta >= 0) { - $state = $STATE_OK; - } - $message = "$delta seconds old$extra_msg"; } else { - $message = "no directory"; - } -} continue { - printf "$host\tbackups\t$state\t$message\n"; - my @dom_sufx = split(/\./, $host); - my $dom_sufx = join('.', @dom_sufx[1,-1]); - foreach my $vserver (@vservers) { - printf "$vserver.$dom_sufx\tbackups\t$state\t$message, same as parent: $host\n"; + print_status($host, $state, 'no directory'); } } -- cgit v1.2.3 From 559a8d65fc7a9b00a208219b7cda47749d2b4d68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20Beaupr=C3=A9?= Date: Fri, 17 Apr 2015 16:58:09 -0400 Subject: more refactoring get rid of more temporary variables and cleanup --- files/checkbackups.pl | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/files/checkbackups.pl b/files/checkbackups.pl index 2473218..aebd71a 100755 --- a/files/checkbackups.pl +++ b/files/checkbackups.pl @@ -56,6 +56,7 @@ sub check_rdiff { my ($host, $dir, $subdir, $optv) = @_; my $flag="$dir/$subdir/rdiff-backup-data/backup.log"; my $extra_msg = ''; + my @vservers; if (open(FLAG, $flag)) { while () { if (/StartTime ([0-9]*).[0-9]* \((.*)\)/) { @@ -65,7 +66,7 @@ sub check_rdiff { } } if (!$last_bak) { - $message = "cannot parse backup.log for a valid timestamp"; + print_status($host, $STATE_UNKNOWN, "cannot parse backup.log for a valid timestamp"); next; } } else { @@ -114,7 +115,7 @@ sub check_flag { my ($host, $flag) = @_; my @stats = stat($flag); if (not @stats) { - print_status($host, $state, "cannot stat flag $flag"); + print_status($host, $STATE_UNKNOWN, "cannot stat flag $flag"); } else { ($state, $delta) = check_age($stats[9]); @@ -133,7 +134,7 @@ if (defined($opt_o)) { } chdir($backupdir); -my ($delta, $state, $message, @vservers, $host); +my ($delta, $state, $host); foreach $host (@hosts) { chomp($host); if ($opt_o) { @@ -142,9 +143,6 @@ foreach $host (@hosts) { $dir = $host; } my $flag=""; - @vservers = (); - $state = $STATE_UNKNOWN; - $message = "???"; if (-d $dir) { # guess the backup type and find a proper stamp file to compare # XXX: the backup type should be part of the machine registry @@ -166,9 +164,9 @@ foreach $host (@hosts) { $flag="$dir/rsync.log"; check_flag($host, $flag); } else { - print_status($host, $state, 'unknown system'); + print_status($host, $STATE_UNKNOWN, 'unknown system'); } } else { - print_status($host, $state, 'no directory'); + print_status($host, $STATE_UNKNOWN, 'no directory'); } } -- cgit v1.2.3 From 7de608b0bf6e0a38d3bf8bcd95859409cff063de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20Beaupr=C3=A9?= Date: Fri, 17 Apr 2015 17:02:35 -0400 Subject: use proper variable for rdiff checks this code is now tested and works, at least for rdiff. it is assumed that simple flags also works. --- files/checkbackups.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/checkbackups.pl b/files/checkbackups.pl index aebd71a..af9e66e 100755 --- a/files/checkbackups.pl +++ b/files/checkbackups.pl @@ -73,7 +73,7 @@ sub check_rdiff { $opt_v && print STDERR "cannot open backup.log\n"; } close(FLAG); - ($state, $delta) = check_age($stats[9]); + ($state, $delta) = check_age($last_bak); print_status($host, $state, "$delta seconds old$extra_msg"); foreach my $vserver_dir (@vserver_dirs) { $vsdir = "$dir/${subdir}$vserver_dir"; -- cgit v1.2.3 From b1ad64a1bc8bd867f327f9f6563665d855f6bb89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20Beaupr=C3=A9?= Date: Fri, 17 Apr 2015 17:29:03 -0400 Subject: look into subdirectories for multiple backups per hosts we still have a somewhat fucked up structure here, but that's how we use it at koumbit right now --- files/checkbackups.pl | 42 ++++++++++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/files/checkbackups.pl b/files/checkbackups.pl index af9e66e..82387ea 100755 --- a/files/checkbackups.pl +++ b/files/checkbackups.pl @@ -53,8 +53,8 @@ EOF } sub check_rdiff { - my ($host, $dir, $subdir, $optv) = @_; - my $flag="$dir/$subdir/rdiff-backup-data/backup.log"; + my ($host, $dir, $optv) = @_; + my $flag="$dir/rdiff-backup-data/backup.log"; my $extra_msg = ''; my @vservers; if (open(FLAG, $flag)) { @@ -74,9 +74,17 @@ sub check_rdiff { } close(FLAG); ($state, $delta) = check_age($last_bak); - print_status($host, $state, "$delta seconds old$extra_msg"); + $dir =~ /([^\/]*)\/rdiff-backup/; + if ($1 ne $host) { + # special subdir backup + $service = "backups-$1"; + } + else { + $service = 'backups'; + } + print_status($host, $state, "$delta seconds old$extra_msg", $service); foreach my $vserver_dir (@vserver_dirs) { - $vsdir = "$dir/${subdir}$vserver_dir"; + $vsdir = "$dir/$vserver_dir"; if (opendir(DIR, $vsdir)) { @vservers = grep { /^[^\.]/ && -d "$vsdir/$_" } readdir(DIR); $opt_v && print STDERR "found vservers $vsdir: @vservers\n"; @@ -107,8 +115,11 @@ sub check_age { } sub print_status { - my ($host, $state, $message) = @_; - printf "$host\tbackups\t$state\t$message\n"; + my ($host, $state, $message, $service) = @_; + if (!$service) { + $service = 'backups'; + } + printf "$host\t$service\t$state\t$message\n"; } sub check_flag { @@ -142,13 +153,19 @@ foreach $host (@hosts) { } else { $dir = $host; } - my $flag=""; + my $flag; if (-d $dir) { - # guess the backup type and find a proper stamp file to compare - # XXX: the backup type should be part of the machine registry - my $last_bak; + # guess the backup type and find a proper stamp file to compare + @rdiffs = glob("$dir/*/*/rdiff-backup-data"); + foreach $dir (@rdiffs) { + $opt_v && print STDERR "inspecting dir $dir\n"; + $dir =~ s/rdiff-backup-data$//; + check_rdiff($host, $dir, $opt_v); + $flag = 1; + } if (-d "$dir/rdiff-backup") { - check_rdiff($host, $dir, 'rdiff-backup', $opt_v); + check_rdiff($host, $dir . '/rdiff-backup', $opt_v); + $flag = 1; } elsif (-d "$dir/dump") { # XXX: this doesn't check backup consistency $flag="$dir/dump/" . `ls -tr $dir/dump | tail -1`; @@ -163,7 +180,8 @@ foreach $host (@hosts) { # XXX: this doesn't check backup consistency $flag="$dir/rsync.log"; check_flag($host, $flag); - } else { + } + if (!$flag) { print_status($host, $STATE_UNKNOWN, 'unknown system'); } } else { -- cgit v1.2.3 From 795769c39b21be36235b1cc86a17b104ce4afdff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20Beaupr=C3=A9?= Date: Fri, 17 Apr 2015 17:31:19 -0400 Subject: show time delay in hours --- files/checkbackups.pl | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/files/checkbackups.pl b/files/checkbackups.pl index 82387ea..f617297 100755 --- a/files/checkbackups.pl +++ b/files/checkbackups.pl @@ -82,7 +82,7 @@ sub check_rdiff { else { $service = 'backups'; } - print_status($host, $state, "$delta seconds old$extra_msg", $service); + print_status($host, $state, "$delta hours old$extra_msg", $service); foreach my $vserver_dir (@vserver_dirs) { $vsdir = "$dir/$vserver_dir"; if (opendir(DIR, $vsdir)) { @@ -96,7 +96,7 @@ sub check_rdiff { my @dom_sufx = split(/\./, $host); my $dom_sufx = join('.', @dom_sufx[1,-1]); foreach my $vserver (@vservers) { - print_status("$vserver.$dom_sufx", $state, "$delta seconds old$extra_msg, same as parent: $host"); + print_status("$vserver.$dom_sufx", $state, "$delta hours old$extra_msg, same as parent: $host"); } } @@ -111,6 +111,7 @@ sub check_age { } elsif ($delta >= 0) { $state = $STATE_OK; } + $delta = sprintf '%.2f', $delta/3600.0; return ($state, $delta); } @@ -130,7 +131,7 @@ sub check_flag { } else { ($state, $delta) = check_age($stats[9]); - print_status($host, $state, "$delta seconds old"); + print_status($host, $state, "$delta hours old"); } } -- cgit v1.2.3 From d56f1f0852963bb44d92917cc582a533ca27f39f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20Beaupr=C3=A9?= Date: Fri, 17 Apr 2015 17:38:20 -0400 Subject: add state to message --- files/checkbackups.pl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/files/checkbackups.pl b/files/checkbackups.pl index f617297..d68d635 100755 --- a/files/checkbackups.pl +++ b/files/checkbackups.pl @@ -34,6 +34,7 @@ my $STATE_WARNING=1; my $STATE_CRITICAL=2; my $STATE_UNKNOWN=3; my $STATE_DEPENDENT=4; +my %ERRORS=(0=>'OK',1=>'WARNING',2=>'CRITICAL',3=>'UNKNOWN',4=>'DEPENDENT'); # gross hack: we look into subdirs to find vservers my @vserver_dirs = qw{/var/lib/vservers /vservers}; @@ -117,10 +118,11 @@ sub check_age { sub print_status { my ($host, $state, $message, $service) = @_; + my $state_msg = $ERRORS{$state}; if (!$service) { $service = 'backups'; } - printf "$host\t$service\t$state\t$message\n"; + printf "$host\t$service\t$state\t$state_msg $message\n"; } sub check_flag { -- cgit v1.2.3 From 6655fa6b36a6762ef372dc124cf055934279d540 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20Beaupr=C3=A9?= Date: Fri, 17 Apr 2015 17:42:47 -0400 Subject: use end times for backups --- files/checkbackups.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/checkbackups.pl b/files/checkbackups.pl index d68d635..4eb293f 100755 --- a/files/checkbackups.pl +++ b/files/checkbackups.pl @@ -60,7 +60,7 @@ sub check_rdiff { my @vservers; if (open(FLAG, $flag)) { while () { - if (/StartTime ([0-9]*).[0-9]* \((.*)\)/) { + if (/EndTime ([0-9]*).[0-9]* \((.*)\)/) { $last_bak = $1; $extra_msg = ' [backup.log]'; $opt_v && print STDERR "found timestamp $1 ($2) in backup.log\n"; -- cgit v1.2.3 From 2105d828ea5c3373289ab4e928bcde90bf6b40e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20Beaupr=C3=A9?= Date: Fri, 17 Apr 2015 17:43:25 -0400 Subject: improve logging by showing the flag file used --- files/checkbackups.pl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/files/checkbackups.pl b/files/checkbackups.pl index 4eb293f..106463a 100755 --- a/files/checkbackups.pl +++ b/files/checkbackups.pl @@ -63,15 +63,15 @@ sub check_rdiff { if (/EndTime ([0-9]*).[0-9]* \((.*)\)/) { $last_bak = $1; $extra_msg = ' [backup.log]'; - $opt_v && print STDERR "found timestamp $1 ($2) in backup.log\n"; + $opt_v && print STDERR "found timestamp $1 ($2) in $flag\n"; } } if (!$last_bak) { - print_status($host, $STATE_UNKNOWN, "cannot parse backup.log for a valid timestamp"); + print_status($host, $STATE_UNKNOWN, "cannot parse $flag for a valid timestamp"); next; } } else { - $opt_v && print STDERR "cannot open backup.log\n"; + $opt_v && print STDERR "cannot open $flag\n"; } close(FLAG); ($state, $delta) = check_age($last_bak); -- cgit v1.2.3 From a52fa9dc3db79627e1654766a752db5c62ccf499 Mon Sep 17 00:00:00 2001 From: Antoine Beaupre Date: Fri, 12 Nov 2010 17:36:40 -0500 Subject: add an option to directly pipe results to nagios to avoid timeouts --- files/checkbackups.pl | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/files/checkbackups.pl b/files/checkbackups.pl index 106463a..0ea4805 100755 --- a/files/checkbackups.pl +++ b/files/checkbackups.pl @@ -44,10 +44,11 @@ our $opt_c = 48 * 60 * 60; our $opt_w = 24 * 60 * 60; our $opt_v = 0; our $opt_o; +our $opt_s; -if (!getopts('d:c:w:vo')) { +if (!getopts('d:c:w:s:vo')) { print < ] [ -c ] [ -w ] [ -o ] [ -v ] +Usage: $0 [ -d ] [ -c ] [ -w ] [ -o ] [ -s ] [ -v ] EOF ; exit(); @@ -122,7 +123,16 @@ sub print_status { if (!$service) { $service = 'backups'; } - printf "$host\t$service\t$state\t$state_msg $message\n"; + $line = "$host\t$service\t$state\t$state_msg $message\n"; + if ($opt_s) { + $opt_v && print STDERR "sending results to nagios...\n"; + open(NSCA, "|/usr/sbin/send_nsca -H $opt_s") or die("cannot start send_nsca: $!\n"); + print NSCA $line; + close(NSCA) or warn("could not close send_nsca pipe correctly: $!\n"); + } + if (!$opt_s || $opt_v) { + printf $line; + } } sub check_flag { -- cgit v1.2.3 From f234030025d20c80060308bd7ce5753dfcbac4e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20Beaupr=C3=A9?= Date: Wed, 22 Apr 2015 12:08:56 -0400 Subject: complete multi-backup support by using the name in the subdirectory --- README | 14 ++++++++++++++ manifests/rdiff.pp | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/README b/README index a839193..94ad952 100644 --- a/README +++ b/README @@ -20,6 +20,20 @@ doubled as the home for the user that was created. This caused problems with rdiff-backup because of dot files and other things which were not part of any rdiff-backup. +The rdiff resource name is now used as the subdirectory where rdiff +backups are sent. This was previously hardcoded to "rdiff-backup", but +in order to support multiple rdiff backups per host, we now use the +resource name. So if you were using the following resource: + + backupninja::rdiff { 'main': } + +You will want to use the following resource: + + backupninja::rdiff { 'rdiff-backup': } + file { '/etc/backup.d/90_main.rdiff': ensure => absent; } + +Otherwise your backups may be duplicated! + Getting started --------------- diff --git a/manifests/rdiff.pp b/manifests/rdiff.pp index 6c692c7..999eb5d 100644 --- a/manifests/rdiff.pp +++ b/manifests/rdiff.pp @@ -30,7 +30,7 @@ define backupninja::rdiff( { include backupninja::client::rdiff_backup - $directory = "$home/rdiff-backup/" + $directory = "$home/$name/" case $type { 'remote': { -- cgit v1.2.3 From 6468c47980d81b345c069a7e87590d595ae08d70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20Beaupr=C3=A9?= Date: Wed, 22 Apr 2015 17:52:16 -0400 Subject: always add the directory name to service --- files/checkbackups.pl | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/files/checkbackups.pl b/files/checkbackups.pl index 0ea4805..8cef408 100755 --- a/files/checkbackups.pl +++ b/files/checkbackups.pl @@ -76,14 +76,8 @@ sub check_rdiff { } close(FLAG); ($state, $delta) = check_age($last_bak); - $dir =~ /([^\/]*)\/rdiff-backup/; - if ($1 ne $host) { - # special subdir backup - $service = "backups-$1"; - } - else { - $service = 'backups'; - } + $dir =~ /([^\/]+)\/?$/; + $service = "backups-$1"; print_status($host, $state, "$delta hours old$extra_msg", $service); foreach my $vserver_dir (@vserver_dirs) { $vsdir = "$dir/$vserver_dir"; -- cgit v1.2.3 From d64db527aafa4a4edc32571d1729c9118c9c7c03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20Beaupr=C3=A9?= Date: Wed, 22 Apr 2015 16:52:13 -0400 Subject: we switched layout: only one subdir now --- files/checkbackups.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/checkbackups.pl b/files/checkbackups.pl index 8cef408..50a985c 100755 --- a/files/checkbackups.pl +++ b/files/checkbackups.pl @@ -163,7 +163,7 @@ foreach $host (@hosts) { my $flag; if (-d $dir) { # guess the backup type and find a proper stamp file to compare - @rdiffs = glob("$dir/*/*/rdiff-backup-data"); + @rdiffs = glob("$dir/*/rdiff-backup-data"); foreach $dir (@rdiffs) { $opt_v && print STDERR "inspecting dir $dir\n"; $dir =~ s/rdiff-backup-data$//; -- cgit v1.2.3 From 873eb70ef87abfeaace2f4b0020626d01ad1bfe5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20Beaupr=C3=A9?= Date: Wed, 22 Apr 2015 17:52:27 -0400 Subject: fix non-rdiff backup checks --- files/checkbackups.pl | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/files/checkbackups.pl b/files/checkbackups.pl index 50a985c..3991446 100755 --- a/files/checkbackups.pl +++ b/files/checkbackups.pl @@ -164,16 +164,13 @@ foreach $host (@hosts) { if (-d $dir) { # guess the backup type and find a proper stamp file to compare @rdiffs = glob("$dir/*/rdiff-backup-data"); - foreach $dir (@rdiffs) { - $opt_v && print STDERR "inspecting dir $dir\n"; - $dir =~ s/rdiff-backup-data$//; - check_rdiff($host, $dir, $opt_v); + foreach $subdir (@rdiffs) { + $subdir =~ s/rdiff-backup-data$//; + $opt_v && print STDERR "inspecting dir $subdir\n"; + check_rdiff($host, $subdir, $opt_v); $flag = 1; } - if (-d "$dir/rdiff-backup") { - check_rdiff($host, $dir . '/rdiff-backup', $opt_v); - $flag = 1; - } elsif (-d "$dir/dump") { + if (-d "$dir/dump") { # XXX: this doesn't check backup consistency $flag="$dir/dump/" . `ls -tr $dir/dump | tail -1`; chomp($flag); -- cgit v1.2.3