> Can you please check it and see if you think it's sufficient. If it's not I am > willing to integrate the rest of your patch, but I'd like to have assurance > from > upstream before that they are going to integrate it too, in the next > release...
The patch contained checking from the slave point of view, but not from the master. Attached is a new patch against the current version that provides the latter as well. -- Ian Gulliver Penguin Hosting "Failure is not an option; it comes bundled with your Microsoft products."
diff -udr nagios-plugins-1.4/plugins/check_mysql.c nagios-plugins-1.4-slave/plugins/check_mysql.c --- nagios-plugins-1.4/plugins/check_mysql.c 2005-02-22 11:35:35.000000000 -0500 +++ nagios-plugins-1.4-slave/plugins/check_mysql.c 2005-02-22 12:01:54.000000000 -0500 @@ -34,6 +34,7 @@ char *db = NULL; unsigned int db_port = MYSQL_PORT; int check_slave = 0; +char *slave_host = NULL; int process_arguments (int, char **); int validate_arguments (void); @@ -137,6 +138,34 @@ mysql_free_result (res); } + if(slave_host != NULL) { + int found = 0; + /* check for connected slave host */ + if (mysql_query (&mysql, "show slave hosts") != 0) { + mysql_close (&mysql); + die (STATE_CRITICAL, _("slave hosts query error: %s\n"), mysql_error (&mysql)); + } + + /* store the result */ + if ( (res = mysql_store_result (&mysql)) == NULL) { + mysql_close (&mysql); + die (STATE_CRITICAL, _("slave hosts store_result error: %s\n"), mysql_error (&mysql)); + } + + /* fetch the first row */ + while ( (row = mysql_fetch_row (res)) != NULL) { + if (slave_host[0] != '\0' && strcmp(row[1],slave_host) != 0) + continue; + found = 1; + } + + if (found == 0) + die (STATE_CRITICAL, "Slave host %s%snot connected\n", slave_host, slave_host[0] == '\0' ? "" : " "); + + /* free the result */ + mysql_free_result (res); + } + /* close the connection */ mysql_close (&mysql); @@ -165,6 +194,7 @@ {"password", required_argument, 0, 'p'}, {"port", required_argument, 0, 'P'}, {"check-slave", no_argument, 0, 'S'}, + {"slave-host", optional_argument, 0, 's'}, {"verbose", no_argument, 0, 'v'}, {"version", no_argument, 0, 'V'}, {"help", no_argument, 0, 'h'}, @@ -175,7 +205,7 @@ return ERROR; while (1) { - c = getopt_long (argc, argv, "hVSP:p:u:d:H:", longopts, &option); + c = getopt_long (argc, argv, "hVSP:p:u:d:H:s::", longopts, &option); if (c == -1 || c == EOF) break; @@ -204,6 +234,12 @@ case 'S': check_slave = 1; /* check-slave */ break; + case 's': + if (optarg == NULL) + slave_host = ""; + else + slave_host = optarg; + break; case 'V': /* version */ print_revision (progname, revision); exit (STATE_OK); @@ -289,7 +325,9 @@ ==> IMPORTANT: THIS FORM OF AUTHENTICATION IS NOT SECURE!!! <==\n\ Your clear-text password will be visible as a process table entry\n\ -S, --check-slave\n\ - Check if the slave thread is running properly.\n")); + Check if the slave thread is running properly.\n\ + -s, --slave-host[=STRING]\n\ + Check if a slave host (named STRING) is connected.\n")); printf (_("\n\ There are no required arguments. By default, the local database with\n\
signature.asc
Description: Digital signature