[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1118443: marked as done (trixie-pu: package monitoring-plugins/2.4.0-3+deb13u1)



Your message dated Sat, 15 Nov 2025 11:21:45 +0000
with message-id <736c7150dc08501cc89945035c406eaf9688e144.camel@adam-barratt.org.uk>
and subject line Closing requests for updates included in 13.2
has caused the Debian Bug report #1118443,
regarding trixie-pu: package monitoring-plugins/2.4.0-3+deb13u1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
1118443: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1118443
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
Tags: trixie
User: release.debian.org@packages.debian.org
Usertags: pu
X-Debbugs-Cc: monitoring-plugins@packages.debian.org
Control: affects -1 + src:monitoring-plugins

[ Reason ]
As reported in #1116027, check_mysql fails for MySQL 8.4 due to deprecation of 'CHECK SLAVE STATUS' command Another regression was reported in #1110265 where check_users is reporting wrong users count

[ Impact ]
 - check_mysql is unable to check the slave/replica status for MySQL >= 8.4
 - check_users reports wrong users count

[ Tests ]
Upstream test suite, fix for #1116027 was verified[1] by the bug reporter (Jon Cutting) to work. 2.4.0-4 has also those fixes, which is since some time in testing.

[ Risks ]
Low, trivial changes.

[ Checklist ]
     [x] *all* changes are documented in the d/changelog
     [x] I reviewed all changes and I approve them
     [x] attach debdiff against the package in stable
     [x] the issue is verified as fixed in unstable

[ Changes ]
The changes are required to fix the check_mysql and check_users regression.

[ Other info ]
This is a request for pre approval, if you are okay with the changes, I'll upload it.

Kind Regards,

Jan
[1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1116027#39
[2] https://salsa.debian.org/nagios-team/monitoring-plugins/-/pipelines/959549
--
Never write mail to <waja@spamfalle.info>, you have been warned!
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GIT d-- s+: a C+++ UL++++ P+ L+++ E--- W+++ N+++ o++ K++ w--- O M+ V- PS PE Y++
PGP++ t-- 5 X R tv- b+ DI D+ G++ e++ h---- r+++ y++++
------END GEEK CODE BLOCK------
diff --git a/debian/.gitlab-ci.yml b/debian/.gitlab-ci.yml
index 45a5cf6..067d3ee 100644
--- a/debian/.gitlab-ci.yml
+++ b/debian/.gitlab-ci.yml
@@ -3,7 +3,7 @@ include:
   - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/recipes/debian.yml
 
 variables:
-  RELEASE: 'unstable'
+  RELEASE: 'trixie'
   SALSA_CI_DISABLE_APTLY: 0
   SALSA_CI_DISABLE_AUTOPKGTEST: 0
   SALSA_CI_DISABLE_BLHC: 1
diff --git a/debian/changelog b/debian/changelog
index 3a9b589..d9304e1 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,14 @@
+monitoring-plugins (2.4.0-3+deb13u1) trixie; urgency=medium
+
+  * [3cb6abf] d/.gitlab-ci.yml: Change RELEASE to trixie
+  * [1b5ea7b] Adding d/patches/25_check_users_sd_get_uids to fix user count
+  * [b92ed85] Adding d/p/26_check_mysql_replica from upstream (Closes: #1116027)
+  * [4362a8d] d/control: Adding libsystemd-dev and libsystemd0 as build-dep
+    (Closes: #1110265)
+  * [22de282] d/control: Drop libsystemd0 from build-deps, pulled by libsystemd-dev
+
+ -- Jan Wagner <waja@cyconet.org>  Mon, 20 Oct 2025 06:00:52 +0000
+
 monitoring-plugins (2.4.0-3) unstable; urgency=medium
 
   * Upload to unstable 
diff --git a/debian/control b/debian/control
index 7b0f0c1..e4be0a8 100644
--- a/debian/control
+++ b/debian/control
@@ -13,6 +13,7 @@ Build-Depends: debhelper-compat (= 13),
                libnet-snmp-perl,
                libpq-dev,
                libssl-dev,
+               libsystemd-dev,
                liburiparser-dev,
                mawk | awk,
                perl,
diff --git a/debian/patches/25_check_users_sd_get_uids b/debian/patches/25_check_users_sd_get_uids
new file mode 100644
index 0000000..9f541ed
--- /dev/null
+++ b/debian/patches/25_check_users_sd_get_uids
@@ -0,0 +1,28 @@
+From fb39f96ac6f72bb56d17f3e8694134dfea9186e9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Lorenz=20K=C3=A4stle?=
+ <12514511+RincewindsHat@users.noreply.github.com>
+Date: Mon, 11 Aug 2025 21:49:20 +0200
+Subject: [PATCH] check_users: Use sd_get_uids instead of sd_get_session
+
+Previously check_users in combination with systemd used
+sd_get_sessions (3) to aquire the number of users, probably
+with the idea that every users opens a session.
+Turns out, that a user can have multiple sessions and we only really
+want to know how many users there are.
+
+This commit changes to sd_get_uids (3) to achieve that target.
+---
+ plugins/check_users.d/users.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/plugins/check_users.c
++++ b/plugins/check_users.c
+@@ -92,7 +92,7 @@
+ 
+ #ifdef HAVE_LIBSYSTEMD
+ 	if (sd_booted () > 0)
+-	        users = sd_get_sessions (NULL);
++		users = sd_get_uids(NULL);
+ 	else {
+ #endif
+ #if HAVE_WTSAPI32_H
diff --git a/debian/patches/26_check_mysql_replica b/debian/patches/26_check_mysql_replica
new file mode 100644
index 0000000..aeeb45a
--- /dev/null
+++ b/debian/patches/26_check_mysql_replica
@@ -0,0 +1,188 @@
+From 4886fa3debf79aa2faac9d0180e8ddb4bb1d4aaa Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Lorenz=20K=C3=A4stle?=
+ <12514511+RincewindsHat@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@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;
+From 392c945966d96d1dba9c68ac7a73450c2ad72d85 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Lorenz=20K=C3=A4stle?= <lorenz.kaestle@netways.de>
+Date: Tue, 30 Sep 2025 14:51:39 +0200
+Subject: [PATCH] More renaming due to MySQL name chances
+
+Due to MySQL changing several term in Version 8.0.22 the way to
+determine the status of replicas has changed.
+To adapt to these changes in a517dc614e44650a7e9204c4202feec7a40fd37f
+check_mysql was modified to adapt to different versions.
+Some parts were missed though which results in failures to detect
+the replica status properly.
+
+This parts should be contained in this commit.
+
+---
+
+Taken from https://patch-diff.githubusercontent.com/raw/monitoring-plugins/monitoring-plugins/pull/2163.patch
+
+---
+ plugins/check_mysql.c | 37 ++++++++++++++++++++++++++-----------
+ 1 file changed, 26 insertions(+), 11 deletions(-)
+
+--- a/plugins/check_mysql.c
++++ b/plugins/check_mysql.c
+@@ -300,17 +300,32 @@
+ 			num_fields = mysql_num_fields(res);
+ 			fields = mysql_fetch_fields(res);
+ 			for(i = 0; i < num_fields; i++) {
+-				if (strcmp(fields[i].name, "Slave_IO_Running") == 0) {
+-					slave_io_field = i;
+-					continue;
+-				}
+-				if (strcmp(fields[i].name, "Slave_SQL_Running") == 0) {
+-					slave_sql_field = i;
+-					continue;
+-				}
+-				if (strcmp(fields[i].name, "Seconds_Behind_Master") == 0) {
+-					seconds_behind_field = i;
+-					continue;
++				if (use_deprecated_slave_status) {
++					if (strcmp(fields[i].name, "Slave_IO_Running") == 0) {
++						slave_io_field = i;
++						continue;
++					}
++					if (strcmp(fields[i].name, "Slave_SQL_Running") == 0) {
++						slave_sql_field = i;
++						continue;
++					}
++					if (strcmp(fields[i].name, "Seconds_Behind_Master") == 0) {
++						seconds_behind_field = i;
++						continue;
++					}
++				} else {
++					if (strcmp(fields[i].name, "Replica_IO_Running") == 0) {
++						slave_io_field = i;
++						continue;
++					}
++					if (strcmp(fields[i].name, "Replica_SQL_Running") == 0) {
++						slave_sql_field = i;
++						continue;
++					}
++					if (strcmp(fields[i].name, "Seconds_Behind_Source") == 0) {
++						seconds_behind_field = i;
++						continue;
++					}
+ 				}
+ 			}
+ 
diff --git a/debian/patches/series b/debian/patches/series
index d349ff1..f540ae3 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -17,4 +17,6 @@
 22_check_by_ssh_missing_options
 23_sslutils_fix_error_message
 24_check_http_deprecation
+25_check_users_sd_get_uids
+26_check_mysql_replica
 # feature patches

--- End Message ---
--- Begin Message ---
Package: release.debian.org
Version: 13.2

Hi,

The updates referenced in each of these bugs were included in today's
13.2 trixie point release.

Regards,

Adam

--- End Message ---

Reply to: