+=head1 NAME
+
+B<check_mysql> - spong-network module to check MySQL servers
+
+=head1 DESCRIPTION
+
+This is a plugin module for the Spong L<spong-network> program. The
+B<check_mysql> module checks the status of MySQL servers by querying
+them using the mysqladmin command.
+
+It not only alerts you to a problem if it can't connect, but it also
+returns some potentially interesting numbers. These numbers can be
+graphed using L<spong-rrd>.
+
+=cut
+
# Register the routine with the plugin registry
$PLUGINS{'mysql'} = \&check_mysql;
-# This will check the status of MySQL on a system. It uses
-# the mysqladmin command to query the server.
-#
-# Place this file in $SPONGHOME/lib/Spong/Network/plugins and add
-#
-# $MYSQLADMIN = "/usr/bin/mysqladmin -h";
-# $DBUSER = "user";
-# $DBPASS = "password";
-#
-# to spong.conf.
-#
-# Miles Lott <milos@insync.net>
-
-$DBPORT = "";
-
sub check_mysql {
+ my( $host ) = @_;
+ my( $dbuser ) = $HOSTS{$host}{'mysql'}{'dbuser'}
+ || $HOSTS_DEFAULTS{'mysql'}{'dbuser'};
+ my( $dbpass ) = $HOSTS{$host}{'mysql'}{'dbpass'}
+ || $HOSTS_DEFAULTS{'mysql'}{'dbpass'};
+ my( $color, $summary, $message ) = ( "green", "MySQL Ok", "" );
- my( $host ) = @_;
- my( $color, $summary, $message ) = ( "green", "Server OK", "" );
-
- if (defined($HOSTS{$host}{'mysql_port'}) ) {
- $DBPORT = "-P " . $HOSTS{$host}{'mysql_port'};
- }
-
- open (MYSQL,"$MYSQLADMIN $host $DBPORT status -u$DBUSER -p$DBPASS 2>&1 |") || warn "Could not exec $MYSQLADMIN for status info.";
- while (<MYSQL>) {
- $message .= $_;
- if (/Can\'t connect/) {
- $color = "red"; $summary = "Server is unreachable.";
- }
- if (/Access denied/) {
- $color = "yellow"; $summary = "Server is up, but access is denied.";
- }
- }
-
- &debug( "mysql - $host - $color, $summary" );
- return( $color, $summary, $message );
+ open (MYSQL,"$MYSQLADMIN $host status -u$dbuser -p$dbpass 2>&1 |") || warn "Could not exec $MYSQLADMIN for status info.";
+ while (<MYSQL>) {
+ $message .= $_;
+ if (/Can\'t connect/) {
+ $color = "red"; $summary = "Server is unreachable.";
+ }
+ if (/Access denied/) {
+ $color = "yellow"; $summary = "Server is up, but access is denied.";
+ }
+ }
+
+ &debug( "mysql - $host - $color, $summary" );
+ return( $color, $summary, $message );
}
1;
+__END__
+
+=head2 Output Returned
+
+=over 4
+
+=item Status
+
+If there is nothing degraded or failed on the MySQL server then 'green'
+status is returned. Otherwise 'yellow' is returned if we don't have access
+or 'red' is returned if the connection fails.
+
+This could be extended in the future to check and see if a minimum number
+of tables are present.
+
+=item Summary Field
+
+If there are no problems, 'MySQL Ok' is returned. Otherwise the summary field
+will have a short description of what the problem or anamoly is.
+
+=item Detail Message Field
+
+If the MySQL process is contactable, then the detail message will have
+some interesting numbers from the MySQL server.
+
+=back
+
+=head2 Configuration
+
+It is necessary to add the following to L<spong.conf>:
+
+$MYSQLADMIN = "/usr/bin/mysqladmin -h";
+
+Where C</usr/bin> is replaced with the path that leads to C<mysqladmin>.
+
+It is possible to set configuration details both for as a a default and
+then for specific hosts. An example is given in L<EXAMPLES>.
+
+=back
+
+=head1 EXAMPLES
+
+ %HOSTS_DEFAULTS = (
+ 'mysql' => {
+ 'dbuser' => 'spong',
+ 'dbpass' => 'default-password'
+ }
+ )
+
+ %HOSTS = (
+ 'mysql.server.com' => {
+ 'services' => 'mysql',
+ 'mysql' => {
+ 'dbpass' => 'host-specific-password'
+ }
+ }
+
+=head1 SEE ALSO
+
+L<spong-network>, L<check_insight>,
+L<spong-network Modules Template|spong-network-mod-template>,
+L<Spong Developer's Guide|developer-guide>
+
+=head1 RESTRICTIONS
+
+B<check_mysql> uses mysqladmin, hence it is necessary to have some basic
+client utilities installed from MySQL.
+
+=head1 AUTHOR
+
+Miles Lott <milos@insync.net>
+
+Support for %HOSTS and %HOSTS_DEFAULTS and POD documentation added by
+Andrew Ruthven <andrew@etc.gen.nz> - 2002/06/13.
+