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 withattrs
set to[]
to return empty attributes instead of all of them. #8169 - Drop the undocumented
Checkable#process_check_result
and brokenSystem#track_parents
DSL 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_template
andservice_template
tags 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_timeout
also 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/sbin
to/usr/bin
equivalence. #10429 - Don't load
Notification
objects beforeUser
andUserGroup
objects 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
Recovery
notification. #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
Custom
notification whileinterval
is set to0
. #7818 - Reset all signal handlers of child processes to their defaults before starting a plugin. #8011
- tests: Fix
FormatDateTime
test cases with invalid formats on macOS and all BSD-based systems. #10149 - Mark move constructor and assignment operator in
String
asnoexcept
to allow optimizations. #10353 #10365
- Use
- Cluster and API
- Fix an inverted condition in
ApiListener#IsHACluster()
that caused to always returntrue
in a non-HA setup. #10417 - Don't silently accept authenticated JSON-RPC connections with no valid endpoint. #10415
- Sync
Notification#notified_problem_users
across 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 received
by Icinga 2. #9928 - Fix a deadlock triggered by concurrent
/v1/actions/add-comment
and/v1/actions/acknowledge-problem
requests on the same checkable, as well as a crash that might occur when running perfectly timed/v1/actions/add-comment
and/v1/actions/remove-comment
requests 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-command
check command. #10435 - Add
-n
($load_procs_to_show$
) argument toload
check command. #10426 - Add
--inode-perfdata
($disk_np_inode_perfdata$
) argument todisk
check command. #10395 - Add
-r
($ssh_remote_version$
) and-P
($ssh_remote_protocol$
) arguments tossh
check command. #10283 - Add
--unplugged_nics_state
($vmware_unplugged_nics_state$
) argument tovmware-esx-soap-host-net
andvmware-esx-soap-host-net-nic
check commands. #10261 - Add
-X
($proc_exclude_process$
) argument toprocs
check command. #10232 - Add
--dane
($ssl_cert_dane$
) argument tossl_cert
check command. #10196 - Fix
check_ssl_cert
deprecation warnings. #9758 - Fix
check_systemd
executable name add add all missing arguments. #10035 - Add
-M
($snmp_multiplier$
&$snmpv3_multiplier$
) argument tosnmp
andsnmpv3
check commands. #9975 - Add
--continue-after-certificate
($http_certificate_continue$
) argument tohttp
check command. #9974 - Add
--ignore-maximum-validity
($ssl_cert_ignore_maximum_validity$
) argument tossl_cert
check command. #10396 - Add
--maximum-validity
($ssl_cert_maximum_validity$
) argument tossl_cert
check command. #9881 - Add
--url
($ssl_cert_http_url$
) argument tossl_cert
check command. #9759 - Add
fuse.sshfs
andfuse.*
(supported only by Monitoring Plugins) to the list of default disk exclude types. #9749 - Add
check_curl
check command. #9205 - Add the
--extra-opts
argument to various commands that support it. #8010
Documentation
- Don't use
dnf config-manager
to configure Fedora repository and mentionicingadb-redis-selinux
package. #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_timeout
value in thehostalive
check 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
livestatus
build error on macOS without unity builds. #10176 - Remove unused methods in
SharedObject
class. #10456 - Remove unused
ProcessingResult#NoCheckResult
enum 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-override
to warn about missingoverride
specifiers. #10225 #10356 - Make
icinga::Empty
a constant to prevent accidental modifications. #10224 - Remove various unused methods in the
Registry
class. #10222 - Fix missing parent
std::atomic<T>
constructor call in ourAtomic<T>
wrapper class. #10215 - Drop unused
m_NextHeartbeat
member 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_partial
parameter 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