git.lirion.de

Of git, get, and gud

summaryrefslogtreecommitdiffstats
path: root/nagios-plugins-contrib-24.20190301~bpo9+1/check_memory
diff options
context:
space:
mode:
Diffstat (limited to 'nagios-plugins-contrib-24.20190301~bpo9+1/check_memory')
-rw-r--r--nagios-plugins-contrib-24.20190301~bpo9+1/check_memory/Makefile1
-rw-r--r--nagios-plugins-contrib-24.20190301~bpo9+1/check_memory/check_memory154
-rw-r--r--nagios-plugins-contrib-24.20190301~bpo9+1/check_memory/control9
-rw-r--r--nagios-plugins-contrib-24.20190301~bpo9+1/check_memory/copyright16
4 files changed, 180 insertions, 0 deletions
diff --git a/nagios-plugins-contrib-24.20190301~bpo9+1/check_memory/Makefile b/nagios-plugins-contrib-24.20190301~bpo9+1/check_memory/Makefile
new file mode 100644
index 0000000..23f8a8f
--- /dev/null
+++ b/nagios-plugins-contrib-24.20190301~bpo9+1/check_memory/Makefile
@@ -0,0 +1 @@
+include ../common.mk
diff --git a/nagios-plugins-contrib-24.20190301~bpo9+1/check_memory/check_memory b/nagios-plugins-contrib-24.20190301~bpo9+1/check_memory/check_memory
new file mode 100644
index 0000000..bf46711
--- /dev/null
+++ b/nagios-plugins-contrib-24.20190301~bpo9+1/check_memory/check_memory
@@ -0,0 +1,154 @@
+#!/usr/bin/perl
+#
+# check_memory - Check free(1) data against given tresholds
+#
+# Copyright (C) 2007 Thomas Guyot-Sionnest <tguyot@gmail.com>
+#
+# 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 the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+
+
+use strict;
+use warnings;
+use vars qw($PROGNAME $VERSION $FREECMD $UNIT);
+use Nagios::Plugin;
+
+$PROGNAME = "check_memory";
+$VERSION = '1.0.1';
+$FREECMD = '/usr/bin/free';
+$UNIT = 'M';
+
+my $np = Nagios::Plugin->new(
+ usage => "Usage: %s [ -w <warning_threshold> ] [ -c <critical_threshold> ]\n"
+ . ' [ -u <unit> ]',
+ version => $VERSION,
+ plugin => $PROGNAME,
+ blurb => 'Check free(1) data against given tresholds',
+ timeout => 30,
+);
+
+$np->add_arg(
+ spec => 'warning|w=s',
+ help => "-w, --warning=THRESHOLD[%]\n"
+ . " Warning threshold (in bytes or percent) for free memory. See\n"
+ . " http://nagiosplug.sourceforge.net/developer-guidelines.html#THRESHOLDFORMAT\n"
+ . " for the threshold format. Alternatively this can be defined as a percentage\n"
+ . ' of minimum free memory (warning and critical must be in the same format).',
+ required => 0,
+);
+
+$np->add_arg(
+ spec => 'critical|c=s',
+ help => "-c, --critical=THRESHOLD[%]\n"
+ . " Critical threshold (in bytes or percent) for free memory. See\n"
+ . " http://nagiosplug.sourceforge.net/developer-guidelines.html#THRESHOLDFORMAT\n"
+ . " for the threshold format. Alternatively this can be defined as a percentage\n"
+ . ' of minimum free memory (warning and critical must be in the same format).',
+ required => 0,
+);
+
+$np->add_arg(
+ spec => 'unit|u=s',
+ help => "-u, --unit=UNIT\n"
+ . " Unit to use for human-redeable output. Can be 'b', 'K' 'M' or 'G' for\n"
+ . " bytes, KiB, MiB or GiB respectively (default: '$UNIT').",
+ default => $UNIT,
+ required => 0,
+);
+
+$np->getopts;
+
+# Assign, then check args
+
+my $multiple;
+my $unit = $np->opts->unit;
+if ($unit eq 'M') {
+ $multiple = 1024 * 1024;
+} elsif ( $unit eq 'K') {
+ $multiple = 1024;
+} elsif ( $unit eq 'b') {
+ $multiple = 1;
+} elsif ( $unit eq 'G') {
+ $multiple = 1024 * 1024 * 1024;
+} else {
+ $np->nagios_exit('UNKNOWN', "Unit must be one of 'b', 'K', 'M' or 'G', case-sensitive.");
+}
+my $verbose = $np->opts->verbose;
+
+# Would better fit later but doing it here validates thresholds
+my $warning = $np->opts->warning;
+my $critical = $np->opts->critical;
+$np->set_thresholds(
+ warning => ((defined($warning) && $warning !~ /^\d+%$/) ? $warning : undef),
+ critical => ((defined($critical) && $critical !~ /^\d+%$/) ? $critical : undef),
+);
+
+# Better safe than sorry
+alarm $np->opts->timeout;
+
+# We always get bytes, then calculate units ourselves
+warn("Running: '$FREECMD -b'\n") if ($verbose);
+open(RESULT, "$FREECMD -b |")
+ or $np->nagios_exit('CRITICAL', "Could not run $FREECMD");
+
+warn("Output from $FREECMD:\n") if ($verbose > 1);
+my ($used, $free);
+while (<RESULT>) {
+ warn(" $_") if ($verbose > 1);
+ next unless (m#^\-/\+\ buffers/cache:\s*(\d+)\s+(\d+)#);
+ $used = $1;
+ $free = $2;
+}
+
+close(RESULT);
+alarm(0);
+
+$np->nagios_exit('CRITICAL', "Unable to interpret $FREECMD output") if (!defined($free));
+
+my $total = $used + $free;
+if (defined($warning) && $warning =~ /^\d+%$/) {
+ if ($warning) {
+ $warning =~ s/%//;
+ $warning = $total / 100 * $warning;
+ $warning .= ':';
+ }
+ warn("Calculated threshold (from percentage): warn=>$warning\n") if ($verbose);
+}
+
+if (defined($critical) && $critical =~ /^\d+%$/) {
+ if ($critical) {
+ $critical =~ s/%//;
+ $critical = $total / 100 * $critical;
+ $critical .= ':';
+ }
+ warn("Calculated threshold (from percentage): crit=>$critical\n") if ($verbose);
+}
+
+$np->set_thresholds(
+ warning => $warning,
+ critical => $critical,
+);
+
+$np->add_perfdata(
+ label => "free",
+ value => $free,
+ uom => 'b',
+ threshold => $np->threshold,
+);
+
+my $freeprint = int($free/$multiple);
+
+$np->nagios_exit($np->check_threshold($free), "$freeprint$unit free");
+
diff --git a/nagios-plugins-contrib-24.20190301~bpo9+1/check_memory/control b/nagios-plugins-contrib-24.20190301~bpo9+1/check_memory/control
new file mode 100644
index 0000000..e201421
--- /dev/null
+++ b/nagios-plugins-contrib-24.20190301~bpo9+1/check_memory/control
@@ -0,0 +1,9 @@
+Homepage: https://github.com/dermoth/misc-code/blob/master/nagios/plugins/check_memory
+Watch: https://raw.github.com/dermoth/misc-code/master/nagios/plugins/check_memory VERSION = '([0-9.]+)';
+Uploaders: Bernd Zeimetz <bzed@debian.org>
+Description: plugin to check for free memory
+ This plugin excludes the system cache and buffer, because
+ on some system with very stable memory usage it is perfectly
+ normal for system cache to fill in all available memory.
+Recommends: libmonitoring-plugin-perl | libnagios-plugin-perl (>= 0.31)
+Version: 1.0.1
diff --git a/nagios-plugins-contrib-24.20190301~bpo9+1/check_memory/copyright b/nagios-plugins-contrib-24.20190301~bpo9+1/check_memory/copyright
new file mode 100644
index 0000000..cbdadcf
--- /dev/null
+++ b/nagios-plugins-contrib-24.20190301~bpo9+1/check_memory/copyright
@@ -0,0 +1,16 @@
+Copyright (C) 2007 Thomas Guyot-Sionnest <tguyot@gmail.com>
+
+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 the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+MA 02110-1301 USA.