[pkg-nagios-changes] [Git][nagios-team/monitoring-plugins][trixie] Adding d/p/25_check_mysql_replica from upstream (Closes: #1116027)

Jan Wagner (@waja) gitlab at salsa.debian.org
Fri Sep 26 16:19:24 BST 2025



Jan Wagner pushed to branch trixie at Debian Nagios Maintainer Group / monitoring-plugins


Commits:
9b3a7812 by Jan Wagner at 2025-09-26T17:19:06+02:00
Adding d/p/25_check_mysql_replica from upstream (Closes: #1116027)

- - - - -


2 changed files:

- + debian/patches/25_check_mysql_replica
- debian/patches/series


Changes:

=====================================
debian/patches/25_check_mysql_replica
=====================================
@@ -0,0 +1,120 @@
+From 4886fa3debf79aa2faac9d0180e8ddb4bb1d4aaa Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Lorenz=20K=C3=A4stle?=
+ <12514511+RincewindsHat at users.noreply.github.com>
+Date: Mon, 24 Feb 2025 19:52:08 +0100
+Subject: [PATCH 1/2] Add MySQL server version dectection and adaptive replica
+ query
+
+---
+
+Taken from https://github.com/monitoring-plugins/monitoring-plugins/compare/master...maintenance-2.4.0-check_mysql.patch
+
+---
+ plugins/check_mysql.c | 51 +++++++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 49 insertions(+), 2 deletions(-)
+
+diff --git a/plugins/check_mysql.c b/plugins/check_mysql.c
+index 6a7daf11a..1b7403f7b 100644
+--- a/plugins/check_mysql.c
++++ b/plugins/check_mysql.c
+@@ -211,8 +211,55 @@ main (int argc, char **argv)
+ 	}
+ 
+ 	if(check_slave) {
+-		/* check the slave status */
+-		if (mysql_query (&mysql, "show slave status") != 0) {
++		// Detect which version we are, on older version
++		// "show slave status" should work, on newer ones
++		// "show replica status"
++		// But first we have to find out whether this is
++		// MySQL or MariaDB since the version numbering scheme
++		// is different
++		bool use_deprecated_slave_status = false;
++		const char *server_version = mysql_get_server_info(&mysql);
++		unsigned long server_verion_int = mysql_get_server_version(&mysql);
++		unsigned long major_version = server_verion_int / 10000;
++		unsigned long minor_version = (server_verion_int % 10000) / 100;
++		unsigned long patch_version = (server_verion_int % 100);
++		if (verbose) {
++			printf("Found MariaDB: %s, main version: %lu, minor version: %lu, patch version: %lu\n", server_version, major_version,
++				   minor_version, patch_version);
++		}
++
++		if (strstr(server_version, "MariaDB") != NULL) {
++			// Looks like MariaDB, new commands should be available after 10.5.1
++			if (major_version < 10) {
++				use_deprecated_slave_status = true;
++			} else if (major_version == 10) {
++				if (minor_version < 5) {
++					use_deprecated_slave_status = true;
++				} else if (minor_version == 5 && patch_version < 1) {
++					use_deprecated_slave_status = true;
++				}
++			}
++		} else if (strstr(server_version, "MySQL") != NULL) {
++			// Looks like MySQL
++			if (major_version < 8) {
++				use_deprecated_slave_status = true;
++			} else if (major_version == 10 && minor_version < 4) {
++				use_deprecated_slave_status = true;
++			}
++		} else {
++			printf("Not a known sever implementation: %s\n", server_version);
++			exit(STATE_UNKNOWN);
++		}
++
++		char *replica_query = NULL;
++		if (use_deprecated_slave_status) {
++			replica_query = "show slave status";
++		} else {
++			replica_query = "show replica status";
++		}
++
++		/* check the replica status */
++		if (mysql_query(&mysql, replica_query) != 0) {
+ 			error = strdup(mysql_error(&mysql));
+ 			mysql_close (&mysql);
+ 			die (STATE_CRITICAL, _("slave query error: %s\n"), error);
+
+From 291a704bcf738f6ceb7a1f46c69b8332b33dbd70 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Lorenz=20K=C3=A4stle?=
+ <12514511+RincewindsHat at users.noreply.github.com>
+Date: Fri, 26 Sep 2025 08:57:19 +0200
+Subject: [PATCH 2/2] check_mysql: Assume MySQL server by default (in replica
+ check)
+
+In the Debian Bug tracker (and then Github) a person pointed out,
+that a MySQL server does not respond with a hint that is indeed the
+MySQL software, but only with the version string.
+Which makes sense if one assumes to be the only implementation.
+
+This commit changes the behaviour of the Replica check to assume
+that the counterpart is a MySQL server if there are not hints that
+it is a MariaDB server.
+---
+ plugins/check_mysql.c | 7 ++-----
+ 1 file changed, 2 insertions(+), 5 deletions(-)
+
+diff --git a/plugins/check_mysql.c b/plugins/check_mysql.c
+index 1b7403f7b..951a96f93 100644
+--- a/plugins/check_mysql.c
++++ b/plugins/check_mysql.c
+@@ -239,16 +239,13 @@ main (int argc, char **argv)
+ 					use_deprecated_slave_status = true;
+ 				}
+ 			}
+-		} else if (strstr(server_version, "MySQL") != NULL) {
+-			// Looks like MySQL
++		} else {
++			// Looks like MySQL (or at least not like MariaDB)
+ 			if (major_version < 8) {
+ 				use_deprecated_slave_status = true;
+ 			} else if (major_version == 10 && minor_version < 4) {
+ 				use_deprecated_slave_status = true;
+ 			}
+-		} else {
+-			printf("Not a known sever implementation: %s\n", server_version);
+-			exit(STATE_UNKNOWN);
+ 		}
+ 
+ 		char *replica_query = NULL;


=====================================
debian/patches/series
=====================================
@@ -17,4 +17,5 @@
 22_check_by_ssh_missing_options
 23_sslutils_fix_error_message
 24_check_http_deprecation
+25_check_mysql_replica
 # feature patches



View it on GitLab: https://salsa.debian.org/nagios-team/monitoring-plugins/-/commit/9b3a78125865bc5dc66a402bddf56506113a20ba

-- 
View it on GitLab: https://salsa.debian.org/nagios-team/monitoring-plugins/-/commit/9b3a78125865bc5dc66a402bddf56506113a20ba
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-nagios-changes/attachments/20250926/7e307705/attachment-0001.htm>


More information about the pkg-nagios-changes mailing list