With this release the license of the project was updated to GPLv3 or later (#10700).
In this release we've added the OTLPMetricsWriter, a new perfdata writer targeting backends that support the OpenTelemetry protocol. We recommend users to replace other perfdata writers with this one if possible, especially ElasticsearchWriter, which is now deprecated and scheduled for removal in v2.18.
Another big improvement is the addition of streaming support to our HTTP handlers. Most handlers now use chunked encoding to reduce the amount of the generated JSON document that has to be kept in memory at any one time. Some endpoints, notably v1/objects/query, will also start to stream the response immediately, as the results are processed. This should solve most of the memory issues users were seeing when using the Icinga 2 API on large clusters.
We've also redone our Docker images with this version, with some changes to how the /data directory is mounted and initialized, so make sure you read the new documentation page for installing Icinga 2 in containers.
Below is a summary of the changes relevant for our users. For the complete list of issues and PRs, please see the milestone on GitHub.
Please also check our upgrading docs to see if your configuration requires any manual steps for this update.
Notes
Thanks to all contributors: brad0, cjsoftuk, Donien, Egor-OSSRevival, ETES-Stuttgart, freaknils, martialblog, Napsty, RincewindsHat, Tqnsls, w1ll-i-code, ymartin-ovh
Deprecations
Features newly deprecated in this version:
ElasticsearchWriter(please use the newOTLPMetricsWriterinstead)- User declared namespace objects (i.e.
namespace foo {})
We've scheduled these features for removal in v2.18 (#10734).
These features have already been deprecated and will also be removed in v2.18:
IdoMySqlConnectionIdoPgsqlConnectionCompatLoggerExternalCommandListenerLivestatusListener- Windows check-plugins (i.e.
check_*.exe) andCheckCommands (please use our PowerShell Plugins instead)
We will also no longer provide 32bit Windows MSIs via Chocolatey (#10757).
Enhancements
- OTLPMetricsWriter: A new perfdata writer for the OpenTelemetry protocol: #10685, #10789, and #10800
- HTTP API-handlers now stream results via chunked encoding where possible: #10554, #10692, #10516, and #10414
- Rework docker images build: #10505, #10666, and #10738
- Better debug log messages for dependencies with non-existing parents or children: #10737
- No longer require the unused
queueparameter forv1/events: #10495 - Allow UID/GID values in
ICINGA2_USERandICINGA2_GROUPenvironment variables: #10538 - Add
messages_received_per_typeattribute to endpoints: #10387 - Better error messages on Redis® connection errors: #10727
- New node-setup command option
--no-default-global-zones: #10028 - Warn on problematic object names: #10770
- New config option
http_response_headersfor ApiListener that allows to set arbitrary HTTP-headers that will be sent back with responses: #10563, #10664, and #10662
Bugfixes
- Fix a race condition in the
v1/consolehandler: #10681 and #10675 - InfluxDBWriter: Print full HTTP error body when request fails: #10560
- Fix a crash when querying objects that are simultaneously deleted: #10698
- Fix a race condition leading to double notifications: #10628
- Improve BSD support: #10641, #10640, #10638, and #10635
- TimePeriod: Properly validate
rangesfield: #10633 - Fix recovery notifications outside time period being lost: #10613
- Prevent worst-case exponential complexity in dependency evaluation: #10523
- Fix double-free error in
posix_error::what(): #10558 - Fix expiry times not applying correctly to Acknowledgements via ExternalCommandProcessor: #10486
- Fix dropped or stalled connections blocking Icinga 2 shutdown on all perfdata writers: #10668 and #10799
- Fix misleading TLS handshake error logging: #10798
- SELinux: Allow to query attrs of a filesystem: #10726
ITL
- Support for the
check_smartplugin: #8041 - Add
ssl_cert_long_outputoption tocheck_ssl_certplugin: #10526 - Enhanced SMART attributes monitoring plugin check configuration with more parameters: #10564
- Add plain fping CheckCommand to ITL: #10494
- Remove clear variable from disk CheckCommand: #10531
- Add a check command for NETGEAR monitoring: #10753
Optimizations
- Several performance optimizations for the Redis® connection: #10391, #10732, and #10744
- IcingaDB: Better config and state update queueing: #10619
- Freeze registries after startup: #10388
- Small code and performance optimizations in
Logclass: #10504 - Improved efficiency of the
CpuBoundWorkimplementation: #9990 and #10795
Miscellaneous
- Documentation Improvements: #10481, #10493, #10501, #10513, #10514, #10683, #10686, #10702, and #10745
- Code Quality Improvements: #9411, #10609, #9728, #9729, #9730, #10499, #10552, #10693, #10715, #10716, and #10756
- Unit-Test Improvements: #10350, #10528, #10561, #10749, #10550, #10767, and #10776