aboutsummaryrefslogtreecommitdiff
path: root/files/checkbackups.pl
diff options
context:
space:
mode:
Diffstat (limited to 'files/checkbackups.pl')
-rwxr-xr-xfiles/checkbackups.pl23
1 files changed, 16 insertions, 7 deletions
diff --git a/files/checkbackups.pl b/files/checkbackups.pl
index 24632d1..adc4379 100755
--- a/files/checkbackups.pl
+++ b/files/checkbackups.pl
@@ -59,6 +59,8 @@ foreach my $host (@hosts) {
chomp($host);
my $flag="";
my $type="unknown";
+ my @vservers = ();
+ my $state = $STATE_UNKNOWN;
if (-d $host) {
# guess the backup type and find a proper stamp file to compare
# XXX: this doesn't check if the backup was actually successful
@@ -66,6 +68,11 @@ foreach my $host (@hosts) {
if (-d "$host/rdiff-backup") {
$flag="$host/rdiff-backup/rdiff-backup-data/backup.log";
$type="rdiff";
+ $vserver_dir = "$host/rdiff-backup/var/lib/vservers";
+ if (opendir(DIR, $vserver_dir)) {
+ @vservers = grep { /^\./ && -f "$vserver_dir/$_" } readdir(DIR);
+ closedir DIR;
+ }
} elsif (-d "$host/dump") {
$flag="$host/dump/" . `ls -tr $host/dump | tail -1`;
chomp($flag);
@@ -74,17 +81,16 @@ foreach my $host (@hosts) {
$flag="$host/dup";
$type="duplicity";
} else {
- printf "$host\tbackups\t$STATE_UNKNOWN\tunknown system\n";
+ $message = "unknown system";
next;
}
my @stats = stat($flag);
if (not @stats) {
- printf "$host\tbackups\t$STATE_UNKNOWN\tcannot stat flag $flag\n";
+ $message = "cannot stat flag $flag";
next;
}
my $t = time();
my $delta = $t - $stats[9];
- my $state = $STATE_UNKNOWN;
if ($delta > $crit) {
$state = $STATE_CRITICAL;
} elsif ($delta > $warn) {
@@ -92,10 +98,13 @@ foreach my $host (@hosts) {
} elsif ($delta >= 0) {
$state = $STATE_OK;
}
- print "$host\t";
- print "backups\t$state";
- print "\t$delta seconds old\n";
+ $message = "$delta seconds old";
} else {
- printf "$host\tbackups\t$STATE_UNKNOWN\tno directory\n";
+ $message = "no directory";
+ }
+} continue {
+ printf "$host\tbackups\t$state\t$message\n";
+ foreach my $vserver (@vservers) {
+ printf "$vserver\tbackups\t$state\t$message\n";
}
}