X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;ds=sidebyside;f=dsa-nagios-checks%2Fchecks%2Fdsa-check-dabackup;h=ea5ecc47687032aeee28c46e95e48c8b3dc042e8;hb=37663a677deb85798a66d091537c96b3e65b7d74;hp=f400023b11dc83ba1ba6e350d328f0b563001ca0;hpb=42e99da9d896a33803e763c746e9a103183b6b34;p=mirror%2Fdsa-nagios.git diff --git a/dsa-nagios-checks/checks/dsa-check-dabackup b/dsa-nagios-checks/checks/dsa-check-dabackup index f400023..ea5ecc4 100755 --- a/dsa-nagios-checks/checks/dsa-check-dabackup +++ b/dsa-nagios-checks/checks/dsa-check-dabackup @@ -30,8 +30,11 @@ use Getopt::Long; use Fcntl qw(:seek); my $DABACKUP_CONF = '/etc/da-backup.conf'; -my $MAX_AGE = 30*60*60; +my $MAX_AGE = 40*60*60; my $TOO_FRESH = 5*60; +my $MAX_LOCK_AGE = 24*60*60; +my $LOCKFILE = '/var/lock/da-backup.lock'; + my %CODE = ( 'UNDEF' => -1, 'OK' => 0, @@ -60,7 +63,7 @@ sub help($$) { my ($exitcode, $fd) = @_; version ($fd, 0); print $fd "Usage: $PROGRAM_NAME --help\n"; - print $fd "Usage: $PROGRAM_NAME"; + print $fd "Usage: $PROGRAM_NAME [--fresh ] [--maxage ]"; exit $exitcode }; @@ -68,7 +71,10 @@ my $params = {}; Getopt::Long::config('bundling'); if (!GetOptions ( - 'h|help' => \$params->{'help'}, + 'h|help' => \$params->{'help'}, + 'f|fresh=i' => \$TOO_FRESH, + 'm|maxage=i' => \$MAX_AGE, + 'M|maxlockage=i' => \$MAX_LOCK_AGE, )) { die ("$PROGRAM_NAME: Usage: $PROGRAM_NAME [-fwhv]\n"); }; @@ -134,7 +140,12 @@ for my $f (sort {$a cmp $b} keys %logfiles) { my @stat = stat("$logdir/$f") or die ("Cannot stat $logdir/$f: $!\n"); my $age = time - $stat[10]; - if ($age < $TOO_FRESH) { # File is too new, let's use the old one + my $lockage = undef; + if (my @lockstat = stat($LOCKFILE)) { + $lockage = time - $lockstat[10]; + } + + if ($age < $TOO_FRESH || (defined $lockage && $lockage < $MAX_LOCK_AGE)) { # File is too new, let's use the old one if (-e "$logdir/$f.0") { $f .= ".0"; my @stat = stat("$logdir/$f") or die ("Cannot stat $logdir/$f: $!\n"); @@ -163,7 +174,7 @@ for my $f (sort {$a cmp $b} keys %logfiles) { my $last = ''; while () { chomp; - if (/^sent\s+\d+\s+bytes\s+received\s+\d+\s+bytes\s+[\d\.]+\s+bytes\/sec$/) { + if (/^sent\s+[\d,]+\s+bytes\s+received\s+[\d,]+\s+bytes\s+[\d,\.]+\s+bytes\/sec$/) { problem('OK', 'probably ok', $f); close(FH); next FILE;