Icinga 2 v2.15.0
This Icinga 2 release is focused on adding Icinga 2 dependencies support to Icinga DB, but also includes a number of bugfixes, enhancements and code quality improvements. Below is a summary of the most important changes, for the complete list of issues and PRs, please see the milestone on GitHub.
Notes
Thanks to all contributors: ChrLau, Josef-Friedrich, LordHepipud, OdyX, RincewindsHat, SebastianOpeni, SpeedD3, Tqnsls, botovq, cycloon, legioner0, legna-namor, macdems, mathiasaerts, mcodato, n-rodriguez, netphantm, nicolasberens, oldelvet, peteeckel, tbauriedel, w1ll-i-code, ymartin-ovh
Breaking Changes
- API: Fix
/v1/objects/*queries withattrsset to[]to return empty attributes instead of all of them. #8169 - Drop the undocumented
Checkable#process_check_resultand brokenSystem#track_parentsDSL functions. #10457
Enhancements
- Gracefully disconnect all clients on shutdown and prevent from accepting new connections. #10460
- Icinga DB: Send data to Redis® exactly as they're stored in the database to avoid extra value-mapping routines by the Go daemon. #10452
- Add support for Icinga 2 dependencies in Icinga DB. #10290
- Take host/service reachability into account when computing its severity. #10399
- Rework the dependency cycle detection to efficiently handle large configs and provide better error messages. #10360
- Don't log next check timestamp in scientific notation. #10352
- Automatically remove child downtimes when removing parent downtime. #10345
- Ensure compatibility with Boost version up to v1.88. #10278 #10419
- Reject infinite performance data values. #10077
- Support
host_templateandservice_templatetags inElasticsearchWriter. #10074 - Icinga DB: Support Redis® username authentication. #10102
- Cluster: Distribute host child objects (e.g. services, notifications, etc.) based on the host's name. #10161
- Icinga DB Check: Report an error if both Icinga DB instances are responsible in a HA setup. #10188
- Windows: upgrade build toolchain to Visual Studio 2022. #9747
Bugfixes
- Core
- Use
Checkable#check_timeoutalso for rescheduling remote checks. #10443 - Log: Don't unnecessarily buffer log messages that are going to be dropped anyway. #10177
- Don't loose perfdata counter (
c) unit when normalizing performance data for Icinga DB. #10432 - Fix broken SELinux policy on Fedora ≥ 41 due to the new
/usr/sbinto/usr/binequivalence. #10429 - Don't load
Notificationobjects beforeUserandUserGroupobjects to allow them to be referenced in notifications. #10427 - Ensure consistent DST handling across different platforms. #10422
- Fix Icinga 2 doesn't generate a core dump when it crashes with SIGABRT. #10416
- Don't process concurrent checks for the same checkable. #10372
- Don't process check results after the checker and API listener have been stopped. #10397
- Avoid zombie processes on plugin execution timeout on busy systems. #10375
- Properly restore the notification object state on
Recoverynotification. #10361 - Fix incorrectly dropped acknowledgement and recovery notifications. #10211
- Prevent checks from always being rescheduled outside the configured
check_period. #10070 - Don't send reminder notifications after a
Customnotification whileintervalis set to0. #7818 - Reset all signal handlers of child processes to their defaults before starting a plugin. #8011
- tests: Fix
FormatDateTimetest cases with invalid formats on macOS and all BSD-based systems. #10149 - Mark move constructor and assignment operator in
Stringasnoexceptto allow optimizations. #10353 #10365
- Use
- Cluster and API
- Fix an inverted condition in
ApiListener#IsHACluster()that caused to always returntruein a non-HA setup. #10417 - Don't silently accept authenticated JSON-RPC connections with no valid endpoint. #10415
- Sync
Notification#notified_problem_usersacross the cluster to prevent lost recovery notifications. #10380 - Remove superfluous
)from a HTTP request log message. #9966 - Disable TLS renegotiation (handshake on existing connection) on OpenBSD as well. #9943
- Log also the underlying error message when a HTTP request is closed with
No data receivedby Icinga 2. #9928 - Fix a deadlock triggered by concurrent
/v1/actions/add-commentand/v1/actions/acknowledge-problemrequests on the same checkable, as well as a crash that might occur when running perfectly timed/v1/actions/add-commentand/v1/actions/remove-commentrequests targeting the same comment. #9924
- Fix an inverted condition in
- Icinga DB
- Writers
ITL
- Add
--maintenance_mode_state($vmware_maintenance_mode_state) argument tovmware-esx-commandcheck command. #10435 - Add
-n($load_procs_to_show$) argument toloadcheck command. #10426 - Add
--inode-perfdata($disk_np_inode_perfdata$) argument todiskcheck command. #10395 - Add
-r($ssh_remote_version$) and-P($ssh_remote_protocol$) arguments tosshcheck command. #10283 - Add
--unplugged_nics_state($vmware_unplugged_nics_state$) argument tovmware-esx-soap-host-netandvmware-esx-soap-host-net-niccheck commands. #10261 - Add
-X($proc_exclude_process$) argument toprocscheck command. #10232 - Add
--dane($ssl_cert_dane$) argument tossl_certcheck command. #10196 - Fix
check_ssl_certdeprecation warnings. #9758 - Fix
check_systemdexecutable name add add all missing arguments. #10035 - Add
-M($snmp_multiplier$&$snmpv3_multiplier$) argument tosnmpandsnmpv3check commands. #9975 - Add
--continue-after-certificate($http_certificate_continue$) argument tohttpcheck command. #9974 - Add
--ignore-maximum-validity($ssl_cert_ignore_maximum_validity$) argument tossl_certcheck command. #10396 - Add
--maximum-validity($ssl_cert_maximum_validity$) argument tossl_certcheck command. #9881 - Add
--url($ssl_cert_http_url$) argument tossl_certcheck command. #9759 - Add
fuse.sshfsandfuse.*(supported only by Monitoring Plugins) to the list of default disk exclude types. #9749 - Add
check_curlcheck command. #9205 - Add the
--extra-optsargument to various commands that support it. #8010
Documentation
- Don't use
dnf config-managerto configure Fedora repository and mentionicingadb-redis-selinuxpackage. #10479 - Update the outdated cold startup duration documentation to reflect the current behavior. #10446
- Indent second-level unordered lists with four spaces to correctly render them in the HTML documentation. #10441
- Add a reference to the check result state documentation from within the Advanced Topics section. #10421
- Improve the documentation of how to generate Icinga 2 core dumps. #10418
- Update Icinga 2 CLI output examples to match the current output. #10323
- Fix incorrect
ping_timeoutvalue in thehostalivecheck command documentation. #10069
Code Quality
- Simplify deferred SSL shutdown in
ApiListener#NewClientHandlerInternal(). #10301 - Don't unnecessarily shuffle configuration items during config load. #10008
- Sort config types by their load dependencies at namespace initialization time to save some round trips during config load. #10148
- Fix
livestatusbuild error on macOS without unity builds. #10176 - Remove unused methods in
SharedObjectclass. #10456 - Remove unused
ProcessingResult#NoCheckResultenum value. #10444 - CMake: Drop all third-party cmake modules and use the ones shipped with CMake v3.8+. #10403
- CMake: Raise the minimum required policy to
3.8. #10402 #10478 - CMake: Turn on
-Wsuggest-overrideto warn about missingoverridespecifiers. #10225 #10356 - Make
icinga::Emptya constant to prevent accidental modifications. #10224 - Remove various unused methods in the
Registryclass. #10222 - Fix missing parent
std::atomic<T>constructor call in ourAtomic<T>wrapper class. #10215 - Drop unused
m_NextHeartbeatmember variable fromJsonRpcConnection. #10208 - Enhance some of the validation error messages. #10201
- Don't allow
Type#GetLoadDependencies()to return non-config object type dependencies. #10169 - Don't allow
Type#GetLoadDependencies()to return a set of nullptr type dependencies. #10155 - Remove EOL distros detection code from
Utility::ReleaseHelper()function. #10147 - Remove dead code in TLS
GetSignatureAlgorithm()function. #9882 - Mark
Logger#GetSeverity()as non-virtual to avoid unnecessary vtable lookups. #9851 - Remove unused
Stream#Peak()method and unusedallow_partialparameter fromStream#Read(). #9734 #9736 - Suppress compiler warnings in third-party libraries. #9732
- Fix various compiler warnings. #9731 #10442
- Reduce task function allocation overhead by using a per-thread created lambda in
WorkQueue. #9575 - Remove redundant trailing empty lines and add missing newlines in some files. #7799