Compare commits
10 commits
Author | SHA1 | Date | |
---|---|---|---|
fc0af495f8 | |||
20d58b3cf9 | |||
3f438f9cff | |||
|
97009f5d6d | ||
|
294841c276 | ||
|
4770fe3039 | ||
8cd52e30e9 | |||
7236330ac9 | |||
bee01b8716 | |||
a7037b2f06 |
6 changed files with 248 additions and 1 deletions
24
debian/changelog
vendored
24
debian/changelog
vendored
|
@ -1,3 +1,27 @@
|
||||||
|
monitoring-plugins (2.4.0-5) UNRELEASED; urgency=medium
|
||||||
|
|
||||||
|
*
|
||||||
|
|
||||||
|
-- Jan Wagner <waja@cyconet.org> Mon, 06 Oct 2025 12:04:34 +0200
|
||||||
|
|
||||||
|
monitoring-plugins (2.4.0-4) unstable; urgency=medium
|
||||||
|
|
||||||
|
[ Jan Wagner ]
|
||||||
|
* [bee01b8] d/control: Remove Alexander Wirt from Uploaders
|
||||||
|
* [7236330] d/control: Adding libsystemd-dev and libsystemd0 as build-dep
|
||||||
|
(Closes: #1110265)
|
||||||
|
* [8cd52e3] Adding d/patches/25_check_users_sd_get_uids to fix user count
|
||||||
|
|
||||||
|
[ Bas Couwenberg ]
|
||||||
|
* [4770fe3] Update lintian overrides.
|
||||||
|
* [294841c] Drop Priority: optional, default since dpkg 1.22.13.
|
||||||
|
* [97009f5] Revert "Drop Priority: optional, default since dpkg 1.22.13."
|
||||||
|
|
||||||
|
[ Jan Wagner ]
|
||||||
|
* [3f438f9] Adding d/p/26_check_mysql_replica from upstream (Closes: #1116027)
|
||||||
|
|
||||||
|
-- Jan Wagner <waja@cyconet.org> Mon, 06 Oct 2025 11:29:35 +0200
|
||||||
|
|
||||||
monitoring-plugins (2.4.0-3) unstable; urgency=medium
|
monitoring-plugins (2.4.0-3) unstable; urgency=medium
|
||||||
|
|
||||||
* Upload to unstable
|
* Upload to unstable
|
||||||
|
|
4
debian/control
vendored
4
debian/control
vendored
|
@ -2,7 +2,7 @@ Source: monitoring-plugins
|
||||||
Section: net
|
Section: net
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Maintainer: Debian Nagios Maintainer Group <pkg-nagios-devel@lists.alioth.debian.org>
|
Maintainer: Debian Nagios Maintainer Group <pkg-nagios-devel@lists.alioth.debian.org>
|
||||||
Uploaders: Jan Wagner <waja@cyconet.org>, Alexander Wirt <formorer@debian.org>
|
Uploaders: Jan Wagner <waja@cyconet.org>
|
||||||
Build-Depends: debhelper-compat (= 13),
|
Build-Depends: debhelper-compat (= 13),
|
||||||
libcurl4-openssl-dev | libcurl4-nss-dev | libcurl4-gnutls-dev,
|
libcurl4-openssl-dev | libcurl4-nss-dev | libcurl4-gnutls-dev,
|
||||||
libdbi-dev,
|
libdbi-dev,
|
||||||
|
@ -13,6 +13,8 @@ Build-Depends: debhelper-compat (= 13),
|
||||||
libnet-snmp-perl,
|
libnet-snmp-perl,
|
||||||
libpq-dev,
|
libpq-dev,
|
||||||
libssl-dev,
|
libssl-dev,
|
||||||
|
libsystemd0,
|
||||||
|
libsystemd-dev,
|
||||||
liburiparser-dev,
|
liburiparser-dev,
|
||||||
mawk | awk,
|
mawk | awk,
|
||||||
perl,
|
perl,
|
||||||
|
|
28
debian/patches/25_check_users_sd_get_uids
vendored
Normal file
28
debian/patches/25_check_users_sd_get_uids
vendored
Normal file
|
@ -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
|
188
debian/patches/26_check_mysql_replica
vendored
Normal file
188
debian/patches/26_check_mysql_replica
vendored
Normal file
|
@ -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;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
2
debian/patches/series
vendored
2
debian/patches/series
vendored
|
@ -17,4 +17,6 @@
|
||||||
22_check_by_ssh_missing_options
|
22_check_by_ssh_missing_options
|
||||||
23_sslutils_fix_error_message
|
23_sslutils_fix_error_message
|
||||||
24_check_http_deprecation
|
24_check_http_deprecation
|
||||||
|
25_check_users_sd_get_uids
|
||||||
|
26_check_mysql_replica
|
||||||
# feature patches
|
# feature patches
|
||||||
|
|
3
debian/source/lintian-overrides
vendored
Normal file
3
debian/source/lintian-overrides
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# Not supported by devscripts in trixie
|
||||||
|
older-debian-watch-file-standard 4 *
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue