You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Eight plugins referenced the wrong variable or dict key in a message
or perfdata call. The message text was often correct in each case,
but the emitted numeric value or state label did not match.
- hin-status: `cnt_incidents = 1` was hardcoded whenever the parser
found any incident, instead of `len(incidents)`. The perfdata
counter now tracks the real count.
- mysql-table-locks: the "X immediate / Y locks" denominator used
`Table_locks_immediate` twice. Use the actual total
(`Table_locks_immediate + Table_locks_waited`) as Y.
- ntp-w32tm: when "Time since Last Good Sync Time" ticks into CRIT,
the appended state label hardcoded STATE_WARN. Use the actual
`local_state` instead.
- openstack-swift-stat: the "bytes used" block gated on the quota
header `x-account-meta-quota-bytes` when it should have gated on
`x-account-bytes-used`. The "used" line now shows up for any
account with non-zero bytes, regardless of whether a quota is set.
- php-status: the "missing config" builder appended
`'{key} = {value}, '` as a plain string, so the output contained
literal `{key}` / `{value}` placeholders. Make it an f-string.
- qts-temperatures: the `systemp` and `cputemp` perfdata entries had
their `warn` / `crit` thresholds swapped - the sys perfdata used
`CPUTempWarnT`/`CPUTempErrT` and the cpu perfdata used
`SysTempWarnT`/`SysTempErrT`. The message text was already correct.
- redis-status, valkey-status: the `key_count` perfdata value used
the loop variable `keys` (the last database's per-DB key count)
instead of the accumulated `key_count` total. The "with X keys"
message text was already using `key_count` correctly.
php-fpm-ping was also flagged but turned out to be intentional: the
plugin has no response-time metric (it only compares strings), so
emitting the state integer as the perfdata value is a conscious
design choice rather than a bug.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+7Lines changed: 7 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,13 +14,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
14
14
* axenita-stats: fix the version-number extraction slice `[8 : 8 + find('-') - 1]` that only worked for exactly 6-character versions like `14.0.8` and silently truncated any longer patch number. Use `split('-')[1]` instead, which handles `14.0.12`, `1.2.3`, and 2-digit majors correctly ([#1070](https://github.com/Linuxfabrik/monitoring-plugins/issues/1070))
15
15
* deb-updates: add missing `lib.txt` import so the "N update(s) available" summary no longer crashes with `AttributeError` at runtime
16
16
* Fix `--require-hashes` pip install in pre-commit autoupdate workflow by using pinned version instead
17
+
* hin-status: when incidents are found, set `cnt_incidents = len(incidents)` instead of the hardcoded `1`, so the perfdata counter matches the actual number of incidents listed in the message ([#1070](https://github.com/Linuxfabrik/monitoring-plugins/issues/1070))
17
18
* keycloak-version: replace the fragile regex `r'n (.*)'` (which relied on the "n " in the word "Version" of `/opt/keycloak/version.txt`) with an explicit `r'[Vv]ersion\s+(\d+(?:\.\d+)*)'` pattern. Also fall through to the API fallback when the file is present but the regex does not match, instead of aborting with "Keycloak not found" ([#1070](https://github.com/Linuxfabrik/monitoring-plugins/issues/1070))
18
19
* mysql-memory: fix `get_other_process_memory()` fallback path for psutil older than 5.3.0 (referenced an undefined `cmdline` variable and the wrong attribute on the process dict) and drop an unreachable `break` after `return` in `get_pfs_memory()`
19
20
* mysql-storage-engines: drop a dead `SELECT ... FROM information_schema.engines` query whose result was never used
21
+
* mysql-table-locks: the "X immediate / Y locks" message denominator used `Table_locks_immediate` twice instead of `Table_locks_immediate + Table_locks_waited` as the total, so the output lied about the total lock count. The ratio displayed as a percentage was already correct ([#1070](https://github.com/Linuxfabrik/monitoring-plugins/issues/1070))
20
22
* network-connections: the final `lib.base.oao()` call passed a hardcoded `STATE_OK` instead of the accumulated `state`, discarding all WARN/CRIT decisions from the loop. The plugin now exits with the correct accumulated state ([#1070](https://github.com/Linuxfabrik/monitoring-plugins/issues/1070))
21
23
* ntp-ntpd: collapse four sequential `if`-then-`oao()` early-exit guards into a single `if/elif` chain so the intent (try each failure mode in turn and exit on the first one that matches) is explicit ([#1070](https://github.com/Linuxfabrik/monitoring-plugins/issues/1070))
24
+
* ntp-w32tm: when the "Time since Last Good Sync Time" check yields a non-OK state, the appended state label is now the actual `local_state` (WARN or CRIT) instead of a hardcoded `STATE_WARN`, so a CRIT state no longer shows up as "WARNING" in the message ([#1070](https://github.com/Linuxfabrik/monitoring-plugins/issues/1070))
25
+
* openstack-swift-stat: the "bytes used" block gated on `'x-account-meta-quota-bytes' in headers` (a quota header) when it should have gated on `'x-account-bytes-used' in headers`. The "used" line now shows up for any account with non-zero bytes, regardless of whether a quota is set ([#1070](https://github.com/Linuxfabrik/monitoring-plugins/issues/1070))
22
26
* openvpn-version: replace the fragile regex `r'N (\d+\.\d+\.\d+)'` (which relied on the "N" at the end of "OpenVPN") with an explicit `r'OpenVPN\s+(\d+\.\d+\.\d+)'` pattern anchored on the command name ([#1070](https://github.com/Linuxfabrik/monitoring-plugins/issues/1070))
27
+
* php-status: the "missing config" builder appended `'{key} = {value}, '` as a plain string instead of an f-string, so the output contained literal `{key}` / `{value}` placeholders. Mark it as an f-string so the real key/value is rendered ([#1070](https://github.com/Linuxfabrik/monitoring-plugins/issues/1070))
23
28
* ping: drop dead initialization of `rtt_min / rtt_avg / rtt_max / rtt_mdev` that was never read
29
+
* qts-temperatures: the `systemp` and `cputemp` perfdata entries had their `warn` / `crit` thresholds swapped (system perfdata used the CPU threshold fields and vice versa). The message text was already correct ([#1070](https://github.com/Linuxfabrik/monitoring-plugins/issues/1070))
30
+
* redis-status, valkey-status: the `key_count` perfdata value used the loop variable `keys` (the last database's per-DB key count) instead of the accumulated `key_count` (total across all databases). The "with X keys" message text was already using `key_count` ([#1070](https://github.com/Linuxfabrik/monitoring-plugins/issues/1070))
24
31
* rocketchat-stats: add missing `lib.txt` import so the user-count pluralization no longer crashes with `AttributeError` at runtime
25
32
* starface-java-memory-usage: the heap and non-heap state checks used `state += lib.base.get_worst(used_state, state)` which adds state integers together and corrupts the accumulated state (e.g. WARN+WARN=2 reads as CRIT, WARN+CRIT=3 is outside the valid range). Replaced with `state = lib.base.get_worst(state, used_state)` so the accumulated state remains a valid STATE_OK / STATE_WARN / STATE_CRIT value ([#1070](https://github.com/Linuxfabrik/monitoring-plugins/issues/1070))
26
33
* tools/run-unit-tests: skip the `example` plugin in default runs. Its unit test is a template meant to be copy-pasted into new plugins and does not correspond to a real check. Explicit `python tools/run-unit-tests example` still runs it
0 commit comments