# HG changeset patch # User Matthias Förste # Date 1412945873 -7200 # Node ID e35e7ad5085a5f8d6cb23957627eef8ee432ea7d # Parent 70171296c9fc01ac51af190810578a36abda3b43 better backup age calculation; better error reporting when backup is too old diff -r 70171296c9fc -r e35e7ad5085a check_amanda.pl --- a/check_amanda.pl Tue Oct 04 14:46:50 2011 +0200 +++ b/check_amanda.pl Fri Oct 10 14:57:53 2014 +0200 @@ -1,6 +1,7 @@ #! /usr/bin/perl # Copyright (C) 2011 Christian Arnold +# Copyright (C) 2014 Matthias Förste # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -24,7 +25,6 @@ use Pod::Usage; use Getopt::Long; use Date::Manip; -use Date::Calc qw(Delta_Days); delete @ENV{ grep /^LC_/ => keys %ENV }; $ENV{LANG} = "C"; @@ -63,51 +63,37 @@ "V|version" => sub { version( $ME, $VERSION ); exit $ERRORS{OK}; } ) or pod2usage( -verbose => 1, -exitval => $ERRORS{CRITICAL} ); + my $time = Delta_Format($opt{time}, 0, "%sys"); + report 'CRITICAL', "Invalid --time" unless (defined $time and $time); + unless ( -x $opt{binary} ) { say "$NAME CRITICAL: $opt{binary} - not found or not executable"; exit $ERRORS{CRITICAL}; } - my ( $rc, $date ) = check_status( $opt{configfile}, $opt{time} ); + my ( $rc, $date ) = check_status( $opt{configfile}, $time ); report( $rc, $date ); } sub check_status($$) { my ( $configfile, $time ) = @_; - my $last_backup_date; + my $last_backup_time; my $mesg = undef; my $rc = "CRITICAL"; foreach (`$opt{binary} --config $configfile --error`) { /^Using / and next; - /^From\s+(.*)$/ and $last_backup_date = $1 and next; - /^\S+/ and $mesg = "some failed backups" and last; - } - - # report critical status at any errors - if ($mesg) { - return ( $rc, $mesg ); + /^From\s+(.*)$/ and $last_backup_time = $1 and next; + /^\S+/ and return ('CRITICAL', 'some failed backups'); } # check the backup time state - if ($last_backup_date) { - my $now = localtime(); - my @last_backup_date = UnixDate( $last_backup_date, "%Y", "%m", "%d" ); - my $max_backup_date = DateCalc( $last_backup_date, "+ $time" ); - my @max_backup_date = UnixDate( $max_backup_date, "%Y", "%m", "%d" ); - my @now = UnixDate( $now, "%Y", "%m", "%d" ); - my $allowed_difference_in_days = - Delta_Days( @last_backup_date, @max_backup_date ); - my $difference_in_days = Delta_Days( @last_backup_date, @now ); - $mesg = $last_backup_date; + my $now = time; + my $last = Date_SecsSince1970GMT(UnixDate(ParseDate( $last_backup_time ), qw(%m %d %Y %H %M %S))); + return 'CRITICAL', "Last Backup too old: $last_backup_time" if $now - $last > $time; + return 'OK', $last_backup_time; - $rc = - ( $allowed_difference_in_days > $difference_in_days ) - ? "OK" - : "CRITICAL"; - } - return ( $rc, $mesg ); } sub report($$) { @@ -187,12 +173,10 @@ =head1 AUTHOR -Written by Christian Arnold L +Written by Christian Arnold L and Matthias Förste L =head1 COPYRIGHT -Copyright (C) 2011 by Christian Arnold and Schlittermann internet & unix support. This is free software, and you are welcome to -redistribute it under certain conditions. -See the GNU General Public Licence for details. +Copyright (C) 2011 by Christian Arnold, 2014 by Matthias Förste and Schlittermann internet & unix support. This is free software, and you are welcome to redistribute it under certain conditions. See the GNU General Public Licence for details. =cut diff -r 70171296c9fc -r e35e7ad5085a debian/control --- a/debian/control Tue Oct 04 14:46:50 2011 +0200 +++ b/debian/control Fri Oct 10 14:57:53 2014 +0200 @@ -8,7 +8,7 @@ Package: nagios-plugin-amanda Architecture: all -Depends: ${perl:Depends}, ${misc:Depends}, perl-doc, libdate-manip-perl, libdate-calc-perl +Depends: ${perl:Depends}, ${misc:Depends}, perl-doc, libdate-manip-perl Recommends: amanda-server Description: nagios plugin to check amanda backup status This plugin checks the last amanda backup status.