aboutsummaryrefslogtreecommitdiff
path: root/contrib/check_mysql.pl
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/check_mysql.pl')
-rw-r--r--contrib/check_mysql.pl73
1 files changed, 73 insertions, 0 deletions
diff --git a/contrib/check_mysql.pl b/contrib/check_mysql.pl
new file mode 100644
index 00000000..143d5a5a
--- /dev/null
+++ b/contrib/check_mysql.pl
@@ -0,0 +1,73 @@
+#!/nyet/bin/perl
+#
+# (c)1999 Mitch Wright, NetLine Corporation
+# Read the GNU copyright stuff for all the legalese
+#
+# Check to see that our MySQL server(s) are up and running.
+# This plugin requires that mysqladmin(1) is installed on the system.
+# Since it is part of the MySQL distribution, that should be a problem.
+#
+# If no parameters are giving, a usage statement is output.
+#
+# Exit 0 on success, providing some informational output
+# Exit 2 on failure, provide what we can...
+#
+
+require 5.004;
+
+sub usage;
+
+my $TIMEOUT = 15;
+my $MYSQLADMIN = "/usr/local/bin/mysqladmin";
+
+my %ERRORS = ('UNKNOWN' , '-1',
+ 'OK' , '0',
+ 'WARNING', '1',
+ 'CRITICAL', '2');
+
+my $host = shift || &usage(%ERRORS);
+my $user = shift || &usage(%ERRORS);
+my $pass = shift || "";
+my $warn = shift || 60;
+my $crit = shift || 100;
+
+my $state = "OK";
+
+# Just in case of problems, let's not hang Nagios
+$SIG{'ALRM'} = sub {
+ print ("ERROR: No response from MySQL server (alarm)\n");
+ exit $ERRORS{"UNKNOWN"};
+};
+alarm($TIMEOUT);
+
+open (OUTPUT,
+ "$MYSQLADMIN -h $host -u $user --password=\"$pass\" version 2>&1
+ |");
+
+while (<OUTPUT>) {
+ if (/failed/) { $state="CRITICAL"; s/.*://; $status=$_; last; }
+ next if /^\s*$/;
+ if (/^Server version\s+(\d+.*)/) { $version = $1; next; }
+ if (/^Uptime:\s+(\d.*)/) { $uptime = $1; next; }
+ if (/^Threads:\s+(\d+)\s+/) { $threads = $1; next; }
+}
+
+$status = "Version $version -- $threads Threads <br>Uptime $uptime" if
+$state ne "CRITICAL";
+
+if ($threads >= $warn) { $state = "WARNING"; }
+if ($threads >= $crit) { $state = "CRITICAL"; }
+
+print $status;
+exit $ERRORS{$state};
+
+sub usage {
+ print "Required arguments not given!\n\n";
+ print "MySQL status checker plugin for Nagios, V1.01\n";
+ print "Copyright (c) 1999-2000 Mitch Wright \n\n";
+ print "Usage: check_mysql.pl <host> <user> [<pass> [<warn>
+ [<crit>]]]\n\n"; print " <pass> = password to use for <user> at
+ <host>\n"; print " <warn> = number of threads to warn us
+ about\n"; print " <crit> = number of threads to scream at us
+ about\n"; exit $ERRORS{"UNKNOWN"};
+}