3.0.0-rc1
Pre-releaseAlmost time for a new Monitoring Plugins release
This is a pre release since there are a lot of changes and we would like to give peope some time for testing and to find the new bugs :-)
The core parts of this release are significant changes to the C part of this project, which should be mostly internal and
not change the results in a significant way (meaning the input parameters mostly stay as they are and the exit code should remain the
same if the parameters are the same in the old version and context did not change).
The reality is, that big changes have unintented consequences which are not covered in the test cases or some consequences were not in our scope at all.
Therefore the pre release.
What has changed?
The broad picture
The relevant changes were done in the C part mostly and were introduced to make working on the project easier.
The code is now uniformly formatted with clang-format (config file is in this repository) and a lot of refactoring went into getting more uniform and ideal "dumber" code (meaning easier to read and to think about).
Also some steps were taken to
get to a uniform code base regarding the output.
The idea here is, that each run of a Monitoring Plugin consists of one or more individual "tests" which are summed to present
the overall result state. These "tests" can either be dependent on each other (if one can not connect to a server via network, building a TLS connection and building a HTTP exchange after that is not possible) or independent of each other (check_disk tests different filesystems independently).
This idea was inspired by some other Monitoring Plugins and feel like a good abstraction for the use case.
The consequence is, that there are now data structures which contain individual tests (a test result like OK or CRITICAL , some output and the perfdata part) and they are put together when everything else is done.
Practically the output is not anymore generated by each plugin individually, but centrally by a library (at least for those plugins which were already migrated to that new structure).
This allows to format the ouptut on stdout centrally, currently there is only the default format and an experimental JSON ouptut format (for testing purposes! not stable!).
Plugins with the new output
These Plugins are already migrated:
- check_apt
- check_by_ssh
- check_cluster
- check_curl
- check_dbi
- check_disk
- check_ftp
- check_http
- check_imap
- check_jabber
- check_ldap
- check_mrtg
- check_mrtgtraf
- check_mysql
- check_mysql_query
- check_nntp
- check_nntps
- check_ntp
- check_ntp_peer
- check_ntp_time
- check_pgsql
- check_pop
- check_simap
- check_smtp
- check_snmp
- check_spop
- check_ssh
- check_ssmtp
- check_swap
- check_tcp
- check_udp
- check_users
What else changed?
Of course some bugfixes and even small features found their way into the code, too
check_curl
- check_curl: fix relative redirects on non-standard port by @sni in #2010
- check_curl: raise SSL issue when --continue-after-certificate is used by @ymartin-ovh in #2011
- check_curl: Documentation for --certificate, --cookie-jar by @oxzi in #2012
- Remove experimental state from check_curl by @RincewindsHat in #2017
- Check curl regex state by @RincewindsHat in #2014
- fix check_curl: OpenSSL SSL_read: error:0A000126:SSL routines::unexpe… by @sni in #2022
- check_curl: update TLS notification notes by @RincewindsHat in #2050
- check_curl: enable internal cookie handling by @klaernie in #2052
- Fix/check curl sticky redir by @RincewindsHat in #2188
- check_curl: try to be more helpful in check_curls help by @RincewindsHat in #2186
- check_curl: abort redir if location is not found by @RincewindsHat in #2185
check_snmp
check_snmp links directly agains net-snmp instead of executing snmpget and parsing the output.
- Add more documentation to the help page of check_snmp regarding authe… by @RincewindsHat in #2001
- Check snmp fixes by @RincewindsHat in #2020
- Require snmpgetnext to build check_snmp by @orlitzky in #2062
- check_snmp: fix offset computation for INT by @RincewindsHat in #2190
check_dig
general changes regarding the Plugins and the library
- Add clang-format config file by @RincewindsHat in #2026
- Docs update by @RincewindsHat in #2027
- check_ifstatus: Add -d switch by @aanriot in #1637
- Cleanup/check dhcp by @RincewindsHat in #2029
- Improve readability and reliability of test prepare scripts by @RincewindsHat in #2031
- Cleanup/check ups by @RincewindsHat in #2030
- Cleanup check icmp by @RincewindsHat in #2028
- Cleanup for some more plugins by @RincewindsHat in #2035
- Cleanup/lib by @RincewindsHat in #2034
- Fix/check ssh variable stuff by @RincewindsHat in #2016
- check_disk: Initialize most variables by @RincewindsHat in #2039
- Sync with the latest Gnulib code (d4ec02b3cc) (gnulib v1.0) by @RincewindsHat in #2037
- Add dontfrag / random to fping check by @Firstyear in #2041
- tap: clang-format by @RincewindsHat in #2036
- Add missed changes for dontfrag by @Firstyear in #2042
- Fix RPM build tests by @RincewindsHat in #2044
- Cleanup/check apt by @RincewindsHat in #2032
- Cleanup/leftovers by @RincewindsHat in #2043
- Fix argument order of calloc on several occasions by @RincewindsHat in #2045
- Fix false formatting directive in printf by @RincewindsHat in #2046
- Check disk static fixes by @RincewindsHat in #2021
- add new github test workflow for debian:testing and fedora:rawhide by @sni in #2023
- Fix/check icmp rta min by @RincewindsHat in #2051
- fix typo in SUPPORT by @klaernie in #2053
- Fix breakage in rpm build test due to changes in mock by @RincewindsHat in #2057
- Refactor check_swap by @RincewindsHat in #1976
- Update configure.ac to Autoconf 2.71 syntax by @weiss in #2058
- check_http: fix documentation for --state-regex by @andreasbaumann in #2056
- Opttest tool by @RincewindsHat in #2065
- Remove ROADMAP by @RincewindsHat in #2066
- Feature/new output infra by @RincewindsHat in #2064
- Check by ssh missing options by @RincewindsHat in #2069
- Remove tinderbox related stuff by @RincewindsHat in #2072
- Check mysql replica check by @RincewindsHat in #2068
- Implement JSON output parsing for tests by @RincewindsHat in #2076
- Just use eval instead of Try::Tiny in tests by @RincewindsHat in #2077
- Refactor/check dbi by @RincewindsHat in #2075
- Refactor/check ssh by @RincewindsHat in #2071
- Refactor check dns by @RincewindsHat in #2078
- Refactor/check game by @RincewindsHat in #2074
- Refactor check_apt by @RincewindsHat in #2080
- Refactor check_by_ssh by @RincewindsHat in #2081
- Refactor/check smtp by @RincewindsHat in #2079
- Refactor/check dig by @RincewindsHat in #2082
- Refactor/check cluster by @RincewindsHat in #2083
- Refactor/check hpjd by @RincewindsHat in #2086
- Refactor/check fping by @RincewindsHat in #2084
- Refactor/check mrtg by @RincewindsHat in #2088
- Refactor/check ldap by @RincewindsHat in #2087
- Refactor/check mrtgraf by @RincewindsHat in #2089
- Refactor check_mysql by @RincewindsHat in #2090
- Refactor/check mysql query by @RincewindsHat in #2091
- typo: mrtgraf -> mrtgtraf by @RincewindsHat in #2092
- Refactor/check nagios by @RincewindsHat in #2093
- Refactor/check nt by @RincewindsHat in #2094
- Refactor/check pgsql by @RincewindsHat in #2097
- Refactor/check ntp time by @RincewindsHat in #2096
- Remove check_overcr by @RincewindsHat in #2098
- Refactor/check ntp peer by @RincewindsHat in #2095
- Refactor/check radius by @RincewindsHat in #2102
- Refactor/check ping by @RincewindsHat in #2099
- Refactor/check real by @RincewindsHat in #2103
- Refactor/check time by @RincewindsHat in #2104
- Refactor check_ups by @RincewindsHat in #2105
- Refactor/negate by @RincewindsHat in #2106
- Refactor/check tcp by @RincewindsHat in #2108
- Netbsd fixes by @RincewindsHat in #2110
- Remove check_nwstat by @RincewindsHat in #2100
- change error message for missing certificate by @klaernie in #2112
- Refactor/check disk by @RincewindsHat in #2113
- CI: Install gawk on fedora > 41 by @waja in #2119
- check_http: Adding deprecation text by @waja in #2118
- Do not explicitely disable IPv6 in the CI by @RincewindsHat in #2123
- changed filename in cmd_file_read to const char * (check_apt warning) by @andreasbaumann in #2124
- Improve handling of -4/-6 by @Firstyear in #2115
- Check fping 5.3 options by @RincewindsHat in #2129
- Refactor/check icmp by @RincewindsHat in #2125
- Check icmp/adjustements by @RincewindsHat in #2130
- Refactor/check dhcp by @RincewindsHat in #2116
- Refactor/check procs by @RincewindsHat in #2101
- Refactor/check load by @RincewindsHat in #2109
- check_ntp_peer: fix invalid conversion in printf by @RincewindsHat in #2134
- CI: Adding workflow_dispatch by @waja in #2136
- Adding tmate optional to manual dispatch by @waja in #2137
- Fix check ssh buffer overflow by @rlaager in #2133
- Improvements/check ssh by @RincewindsHat in #2138
- (Re)construct PLATFORM_ID as it's droped since Fedora 43 by @waja in #2139
- Refactor/check users by @RincewindsHat in #2107
- build(deps): bump actions/checkout from 4 to 5 by @dependabot[bot] in #2142
- Refactor/check snmp by @RincewindsHat in #2144
- check_http: formatting + no-brainer linter fixes by @RincewindsHat in #2145
- Refactor/check curl by @RincewindsHat in #2085
- Clang format by @RincewindsHat in #2149
- general refactorin in lib, more local variables, real booleans by @RincewindsHat in #2150
- check_swap: Fix Build At Least For OpenBSD by @oxzi in #2153
- Refactor/check apt: implement new output functionality by @RincewindsHat in #2148
- check_by_ssh: Ignore output on stderr by default by @oxzi in #2151
- check_cluster: new output functionality by @RincewindsHat in #2154
- check_mysql: Assume MySQL server by default (in replica check) by @RincewindsHat in #2156
- fixes check_users build on OpenBSD (without utmpx) by @sthen in #2157
- More renaming due to MySQL name chances by @RincewindsHat in #2163
- check_snmp: remove useless headers by @RincewindsHat in #2159
- build(deps): bump github/codeql-action from 3 to 4 by @dependabot[bot] in #2166
- check_curl: accept non standard compliant status line by @RincewindsHat in #2169
- check_ntp_time: implement modern output by @RincewindsHat in #2171
- Modern output/check ntp peer by @RincewindsHat in #2170
- check_ntp_time: add cli option for output format by @RincewindsHat in #2172
- Modern output/check pgsql by @RincewindsHat in #2173
- check_dbi: new output functionality by @RincewindsHat in #2168
- Modern output/check mysql by @RincewindsHat in #2174
- check_mysql_query: implement modern output by @RincewindsHat in #2175
- check_smtp: modern output + some tls cert helper functions by @RincewindsHat in #2176
- Modern output/check by ssh by @RincewindsHat in #2177
- build(deps): bump actions/checkout from 5 to 6 by @dependabot[bot] in #2179
- check_ldap: modern output implementation by @RincewindsHat in #2180
- Add output formatting option where they were forgotten by @RincewindsHat in #2181
- check_mrtg: implement modern output by @RincewindsHat in #2182
- Look for either replica or slave in replica status by @RincewindsHat in #2184
- check_mrtgtraf: modern output implementation by @RincewindsHat in #2183
- check_ntp_time/check_ntp_peer: unix socket handling by @RincewindsHat in #2187
- Fix/check mysql variables by @RincewindsHat in #2015
Deprecations and removals
check_http
check_http is now deprecated and check_curl should be used as a replacement. The options are mostly identical, although for some cases the 1:1 migration is not possible. check_http is regarded as dead weight now and not maintained anymore.
check_nwstat
This Plugin has lost its purpose over time, there is not much stuff from Novell around. Therefore this Plugin was also removed to reduce ressource consumption and complexity in the project.
check_ntp
check_ntp has be deprecated for ages. Same arguments as above.
New Contributors
- @ymartin-ovh made their first contribution in #2011
- @aanriot made their first contribution in #1637
- @Firstyear made their first contribution in #2041
- @klaernie made their first contribution in #2053
- @orlitzky made their first contribution in #2062
- @rlaager made their first contribution in #2133
- @Decstasy made their first contribution in #2165
Special thanks
Some special thanks are due to nlnet, which granted us one BlueHats prize
some time ago. We are greatful for that and the prize money made it possible to free up some ressources to put more work
in to this very project.
Full Changelog: v2.4.0...v3.0.0-rc1