[monitoring-plugins] check_uptime: Add option to report uptime in days ...
Sven Nierlein
git at monitoring-plugins.org
Tue Feb 15 16:10:10 CET 2022
Module: monitoring-plugins
Branch: master
Commit: c99a166a43fb9da42ba68073224921124a435aab
Author: Andreas Motl <andreas.motl at elmyra.de>
Committer: Sven Nierlein <sven at nierlein.org>
Date: Sat Feb 12 14:41:54 2022 +0100
URL: https://www.monitoring-plugins.org/repositories/monitoring-plugins/commit/?id=c99a166
check_uptime: Add option to report uptime in days instead of seconds
Currently, the plugin output is:
CRITICAL: Uptime is 38829029 seconds.
When using the proposed `--days|-d` option, it will be:
CRITICAL: Uptime is 449 days.
---
plugins-scripts/check_uptime.pl | 17 +++++++++++++++--
plugins-scripts/t/check_uptime.t | 8 +++++++-
2 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/plugins-scripts/check_uptime.pl b/plugins-scripts/check_uptime.pl
index 4c9f22d..04324b2 100755
--- a/plugins-scripts/check_uptime.pl
+++ b/plugins-scripts/check_uptime.pl
@@ -25,7 +25,7 @@ use POSIX;
use strict;
use Getopt::Long;
use vars qw($opt_V $opt_h $opt_v $verbose $PROGNAME $opt_w $opt_c
- $opt_f $opt_s
+ $opt_f $opt_s $opt_d
$lower_warn_threshold $upper_warn_threshold
$lower_crit_threshold $upper_crit_threshold
$status $state $msg);
@@ -137,9 +137,20 @@ if ( $uptime_seconds > $upper_crit_threshold ) {
$state_str = "OK";
}
+# Prepare uptime value (seconds or days)
+my $uptime_text = "";
+my $uptime_unit = "";
+if ( $opt_d ) {
+ $uptime_text = floor($uptime_seconds / 60 / 60 / 24);
+ $uptime_unit = "days";
+} else {
+ $uptime_text = $uptime_seconds;
+ $uptime_unit = "seconds";
+}
+
$msg = "$state_str: ";
-$msg .= "uptime is $uptime_seconds seconds. ";
+$msg .= "uptime is $uptime_text $uptime_unit. ";
$msg .= "Exceeds $out_of_bounds_text threshold. " if $out_of_bounds_text;
$msg .= "Running for $pretty_uptime. " if $opt_f;
if ( $opt_s ) {
@@ -167,6 +178,7 @@ sub process_arguments(){
"c=s" => \$opt_c, "critical=s" => \$opt_c, # critical if above this number
"f" => \$opt_f, "for" => \$opt_f, # show "running for ..."
"s" => \$opt_s, "since" => \$opt_s, # show "running since ..."
+ "d" => \$opt_d, "days" => \$opt_d, # report uptime in days
);
if ($opt_V) {
@@ -262,6 +274,7 @@ sub print_help () {
print "-c (--critical) = Min. number of uptime to generate critical alert ( w < c )\n";
print "-f (--for) = Show uptime in a pretty format (Running for x weeks, x days, ...)\n";
print "-s (--since) = Show last boot in yyyy-mm-dd HH:MM:SS format (output from 'uptime -s')\n";
+ print "-d (--days) = Show uptime in days\n";
print "-h (--help)\n";
print "-V (--version)\n";
print "-v (--verbose) = debugging output\n";
diff --git a/plugins-scripts/t/check_uptime.t b/plugins-scripts/t/check_uptime.t
index c395307..b31d0c6 100644
--- a/plugins-scripts/t/check_uptime.t
+++ b/plugins-scripts/t/check_uptime.t
@@ -5,7 +5,7 @@
#
use strict;
-use Test::More tests => 40;
+use Test::More tests => 42;
use NPTest;
my $result;
@@ -46,6 +46,12 @@ cmp_ok( $result->return_code, '==', 2, "Uptime higher than 2 seconds" );
like ( $result->output, '/Running since \d+/', "Output for the s parameter correct" );
$result = NPTest->testCmd(
+ "./check_uptime -d -w 1 -c 2"
+ );
+cmp_ok( $result->return_code, '==', 2, "Uptime higher than 2 seconds" );
+like ( $result->output, '/CRITICAL: uptime is \d+ days/', "Output for the d parameter correct" );
+
+$result = NPTest->testCmd(
"./check_uptime -w 1 -c 2"
);
cmp_ok( $result->return_code, '==', 2, "Uptime higher than 2 seconds" );
More information about the Commits
mailing list