| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #!/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"};
- }
|