Yonas Habteab
465650262a
OTel: add connect & handshake timeout
2026-04-02 10:51:35 +02:00
Julian Brost
1139ba9b0d
OTel: replace AsioDualEvent usage with AsioConditionVariable
2026-04-02 10:51:35 +02:00
Yonas Habteab
044f85ee76
OTel: do not perform graceful disconnect on I/O timeout
2026-04-01 12:18:22 +02:00
Yonas Habteab
96c3364ab0
OTel: fix race condition triggered on Icinga 2 reload/shutdown
...
Co-Authored-By: Julian Brost <julian.brost@icinga.com>
2026-04-01 12:18:22 +02:00
Yonas Habteab
715aacc19c
Don't manually include custom Protobuf dir via compiler flag
...
Co-Authored-By: Johannes Schmidt <johannes.schmidt@icinga.com>
2026-04-01 12:18:21 +02:00
Yonas Habteab
e6c420e106
OTLP: Set enable_ha to true by default
2026-04-01 12:18:21 +02:00
Yonas Habteab
3f68eea1fd
Reduce default flush_threshold to 16MiB
...
So that it doesn't cause `request body too large` errors when used with
the default OpenTelemetry Collector config that has `max_request_body_size`
set to `20MiB`.
2026-04-01 12:18:21 +02:00
Yonas Habteab
0718632f40
tests: fix testbase linker error
2026-04-01 12:18:21 +02:00
Julian Brost
8f36bdcddc
Replace for with a simpler while loop & fix a typo
2026-04-01 12:18:21 +02:00
Alexander Aleksandrovič Klimov
61daf9b459
Linux GHA: remove unnecessary "${SCL_ENABLE_GCC[@]}"
2026-04-01 12:18:21 +02:00
Yonas Habteab
8bdfba8772
Allow users to provide additional resource attributes
2026-04-01 12:18:21 +02:00
Yonas Habteab
8d4a69e343
docs: document OTLPMetricsWriter feature
2026-04-01 12:18:21 +02:00
Yonas Habteab
60fe45cd6e
Add OTLPMetricsWriter
2026-04-01 12:18:21 +02:00
Yonas Habteab
c34e03078a
GHA: install required protobuf devel package
2026-04-01 12:18:21 +02:00
Yonas Habteab
4ef806e316
Containerfile: install all required Protobuf libs for OTel
2026-04-01 12:18:21 +02:00
Yonas Habteab
18e5b9aa8a
CMake: provide newer FindProtobuf.cmake for old CMake version
...
This module is copied from CMake's official module repository[^1] and
contains only minor changes as outlined below.
```diff
--- a/third-party/cmake/protobuf/FindProtobuf.cmake
+++ b/third-party/cmake/protobuf/FindProtobuf.cmake
@@ -218,9 +218,6 @@ Example:
GENERATE_EXTENSIONS .grpc.pb.h .grpc.pb.cc)
#]=======================================================================]
-cmake_policy(PUSH)
-cmake_policy(SET CMP0159 NEW) # file(STRINGS) with REGEX updates CMAKE_MATCH_<n>
-
function(protobuf_generate)
set(_options APPEND_PATH DESCRIPTORS)
set(_singleargs LANGUAGE OUT_VAR EXPORT_MACRO PROTOC_OUT_DIR PLUGIN PLUGIN_OPTIONS DEPENDENCIES)
@@ -503,7 +500,7 @@ if( Protobuf_USE_STATIC_LIBS )
endif()
endif()
-include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
+include(SelectLibraryConfigurations)
# Internal function: search for normal library as well as a debug one
# if the debug one is specified also include debug/optimized keywords
@@ -768,7 +765,7 @@ if(Protobuf_INCLUDE_DIR)
endif()
endif()
-include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Protobuf
REQUIRED_VARS Protobuf_LIBRARIES Protobuf_INCLUDE_DIR
VERSION_VAR Protobuf_VERSION
@@ -805,5 +802,3 @@ foreach(Camel
string(TOUPPER ${Camel} UPPER)
set(${UPPER} ${${Camel}})
endforeach()
-
-cmake_policy(POP)
```
[^1]: https://github.com/Kitware/CMake/blob/v3.31.0/Modules/FindProtobuf.cmake
2026-04-01 12:18:21 +02:00
Yonas Habteab
415140bc36
Add common OTel type/lib
2026-04-01 12:18:21 +02:00
Yonas Habteab
374cc6e282
Cache Icinga DB env_id in Application class as well
...
So that other components can use it without having to import any Icinga
DB related header files, but only the base library.
2026-04-01 12:15:58 +02:00
Yonas Habteab
30c0a0c7b9
Vendor opentelemetry-proto with the necessary files
...
The proto files are ported from opentelemetry-proto 1.10.0[^1] and
reduced only to the necessary files (all other files are discareded).
[^1]: https://github.com/open-telemetry/opentelemetry-proto/tree/v1.10.0
2026-04-01 12:15:58 +02:00
Yonas Habteab
e449feca8d
Merge pull request #10726 from Icinga/selinux-getattr-fix
...
Container Image / Container Image (push) Has been cancelled
Linux / alpine:bash (push) Has been cancelled
Linux / amazonlinux:2 (push) Has been cancelled
Linux / amazonlinux:2023 (push) Has been cancelled
Linux / debian:11 (linux/386) (push) Has been cancelled
Linux / debian:11 (push) Has been cancelled
Linux / debian:12 (linux/386) (push) Has been cancelled
Linux / debian:12 (push) Has been cancelled
Linux / debian:13 (push) Has been cancelled
Linux / fedora:41 (push) Has been cancelled
Linux / fedora:42 (push) Has been cancelled
Linux / fedora:43 (push) Has been cancelled
Linux / opensuse/leap:15.6 (push) Has been cancelled
Linux / opensuse/leap:16.0 (push) Has been cancelled
Linux / registry.suse.com/bci/bci-base:16.0 (push) Has been cancelled
Linux / registry.suse.com/suse/sle15:15.6 (push) Has been cancelled
Linux / registry.suse.com/suse/sle15:15.7 (push) Has been cancelled
Linux / rockylinux/rockylinux:10 (push) Has been cancelled
Linux / rockylinux:8 (push) Has been cancelled
Linux / rockylinux:9 (push) Has been cancelled
Linux / ubuntu:22.04 (push) Has been cancelled
Linux / ubuntu:24.04 (push) Has been cancelled
Linux / ubuntu:25.04 (push) Has been cancelled
Linux / ubuntu:25.10 (push) Has been cancelled
Windows / Windows (push) Has been cancelled
SELinux: allow to query attrs of a filesystem
2026-03-31 16:38:21 +02:00
obarbashyn
6368887a4c
Add a check command for NETGEAR monitoring ( #10753 )
2026-03-31 15:15:34 +02:00
Johannes Schmidt
52dcf910b6
Merge pull request #10776 from Icinga/give-windows-more-time
...
Container Image / Container Image (push) Waiting to run
Linux / alpine:bash (push) Waiting to run
Linux / amazonlinux:2 (push) Waiting to run
Linux / amazonlinux:2023 (push) Waiting to run
Linux / debian:11 (linux/386) (push) Waiting to run
Linux / debian:11 (push) Waiting to run
Linux / debian:12 (linux/386) (push) Waiting to run
Linux / debian:12 (push) Waiting to run
Linux / debian:13 (push) Waiting to run
Linux / fedora:41 (push) Waiting to run
Linux / fedora:42 (push) Waiting to run
Linux / fedora:43 (push) Waiting to run
Linux / opensuse/leap:15.6 (push) Waiting to run
Linux / opensuse/leap:16.0 (push) Waiting to run
Linux / registry.suse.com/bci/bci-base:16.0 (push) Waiting to run
Linux / registry.suse.com/suse/sle15:15.6 (push) Waiting to run
Linux / registry.suse.com/suse/sle15:15.7 (push) Waiting to run
Linux / rockylinux/rockylinux:10 (push) Waiting to run
Linux / rockylinux:8 (push) Waiting to run
Linux / rockylinux:9 (push) Waiting to run
Linux / ubuntu:22.04 (push) Waiting to run
Linux / ubuntu:24.04 (push) Waiting to run
Linux / ubuntu:25.04 (push) Waiting to run
Linux / ubuntu:25.10 (push) Waiting to run
Windows / Windows (push) Waiting to run
Fix sporadic fails in timer unit-tests on Windows
2026-03-31 12:30:13 +02:00
Julian Brost
4f13651cb0
Merge pull request #10727 from Icinga/icingadb-missing-exception-messages
...
Redis exceptions: add proper what() messages
2026-03-31 10:27:33 +02:00
Julian Brost
9d361e1fb3
Merge pull request #10734 from Icinga/deprecate-everything-we-dont-like
...
Schedule deprecated features for removal in v2.18
2026-03-31 10:25:44 +02:00
Johannes Schmidt
72ebd43ef1
Give base_timer/(invoke|scope) timers a 10x multiplier on Windows
2026-03-31 09:33:09 +02:00
Johannes Schmidt
3f670463f4
Revert "Give timer tests more leeway for inaccurate implementations"
...
This reverts commit 1430e63e72 .
2026-03-31 09:32:28 +02:00
Julian Brost
207764584a
Redis exceptions: remove inline specifiers
...
Remove them as they are redundant, as requested in the PR review.
2026-03-27 17:02:05 +01:00
Julian Brost
221382486e
Redis exceptions: use BOOST_THROW_EXCEPTION
...
Use it for consistency, as requested in the PR review.
2026-03-27 17:01:51 +01:00
Julian Brost
862f012381
Redis exceptions: add proper what() messages
...
RedisDisconnected::what() and RedisProtocolError::what() always returned an
empty string. Similarly, BadRedisType::what() and BadRedisInt::what() only
return the value that couldn't be parsed without any information about the
exception type. If only what() is used when printing the exception, as it's
typical, this results in unhelpful log messages like the following when simply
stopping the Redis server:
[2026-02-23 14:33:33 +0100] critical/IcingaDB: Error during receiving the response to a query which has been fired and forgotten: Connection reset by peer [system:104 at /usr/include/boost/asio/detail/reactive_socket_recv_op.hpp:134 in function 'do_complete']
[2026-02-23 14:33:33 +0100] critical/IcingaDB: Error during receiving the response to a query which has been fired and forgotten:
[2026-02-23 14:33:33 +0100] critical/IcingaDB: Error during receiving the response to a query which has been fired and forgotten:
[2026-02-23 14:33:33 +0100] critical/IcingaDB: Cannot connect to redis-1:6379: Connection refused [system:111 at /usr/include/boost/asio/detail/reactive_socket_connect_op.hpp:98 in function 'do_complete']
This commit changes these messages so that something like "Redis disconnected",
"Redis protocol error: bad int: foo", or "Redis protocol error: bad type: ?" is
returned. In doing so, it also removes a member of type std::vector<char> in
BadRedisInt as this is unsafe to use in exceptions (it violates the requirement
that copy constructor and assignment must be nothrow, see
https://en.cppreference.com/w/cpp/error/exception.html#Standard_exception_requirements ).
With this commit, the log messages are now a bit more helpful:
[2026-02-23 15:08:23 +0100] critical/IcingaDB: Error during receiving the response to a query which has been fired and forgotten: Connection reset by peer [system:104 at /usr/include/boost/asio/detail/reactive_socket_recv_op.hpp:134 in function 'do_complete']
[2026-02-23 15:08:23 +0100] critical/IcingaDB: Error during receiving the response to a query which has been fired and forgotten: Redis disconnected
[2026-02-23 15:08:23 +0100] critical/IcingaDB: Error during receiving the response to a query which has been fired and forgotten: Redis disconnected
[2026-02-23 15:08:23 +0100] critical/IcingaDB: Cannot connect to redis-1:6379: Connection refused [system:111 at /usr/include/boost/asio/detail/reactive_socket_connect_op.hpp:98 in function 'do_complete']
2026-03-27 17:01:49 +01:00
Johannes Schmidt
1e022db535
Document the removal of deprecated features in v2.18
2026-03-27 14:20:58 +01:00
Johannes Schmidt
2108300cf8
Add warnings to deprecated features indicating removal in v2.18
2026-03-27 14:20:55 +01:00
Yonas Habteab
895dea2dc4
Merge pull request #10770 from Icinga/problem-chars
...
Container Image / Container Image (push) Has been cancelled
Linux / alpine:bash (push) Has been cancelled
Linux / amazonlinux:2 (push) Has been cancelled
Linux / amazonlinux:2023 (push) Has been cancelled
Linux / debian:11 (linux/386) (push) Has been cancelled
Linux / debian:11 (push) Has been cancelled
Linux / debian:12 (linux/386) (push) Has been cancelled
Linux / debian:12 (push) Has been cancelled
Linux / debian:13 (push) Has been cancelled
Linux / fedora:41 (push) Has been cancelled
Linux / fedora:42 (push) Has been cancelled
Linux / fedora:43 (push) Has been cancelled
Linux / opensuse/leap:15.6 (push) Has been cancelled
Linux / opensuse/leap:16.0 (push) Has been cancelled
Linux / registry.suse.com/bci/bci-base:16.0 (push) Has been cancelled
Linux / registry.suse.com/suse/sle15:15.6 (push) Has been cancelled
Linux / registry.suse.com/suse/sle15:15.7 (push) Has been cancelled
Linux / rockylinux/rockylinux:10 (push) Has been cancelled
Linux / rockylinux:8 (push) Has been cancelled
Linux / rockylinux:9 (push) Has been cancelled
Linux / ubuntu:22.04 (push) Has been cancelled
Linux / ubuntu:24.04 (push) Has been cancelled
Linux / ubuntu:25.04 (push) Has been cancelled
Linux / ubuntu:25.10 (push) Has been cancelled
Windows / Windows (push) Has been cancelled
Warn on problematic object names
2026-03-27 10:21:58 +01:00
Yonas Habteab
ad9d59df3b
Merge pull request #10772 from Icinga/dependabot/github_actions/korthout/backport-action-4.3.0
...
Bump korthout/backport-action from 4.2.0 to 4.3.0
2026-03-27 09:55:03 +01:00
dependabot[bot]
f8c21c191c
Bump korthout/backport-action from 4.2.0 to 4.3.0
...
Bumps [korthout/backport-action](https://github.com/korthout/backport-action ) from 4.2.0 to 4.3.0.
- [Release notes](https://github.com/korthout/backport-action/releases )
- [Commits](4aaf0e03a9...3c06f323a5 )
---
updated-dependencies:
- dependency-name: korthout/backport-action
dependency-version: 4.3.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
2026-03-27 04:07:14 +00:00
Julian Brost
3312ed7ec4
Merge pull request #9990 from Icinga/re-think-cpuboundwork-implementation-9988
...
Container Image / Container Image (push) Waiting to run
Linux / alpine:bash (push) Waiting to run
Linux / amazonlinux:2 (push) Waiting to run
Linux / amazonlinux:2023 (push) Waiting to run
Linux / debian:11 (linux/386) (push) Waiting to run
Linux / debian:11 (push) Waiting to run
Linux / debian:12 (linux/386) (push) Waiting to run
Linux / debian:12 (push) Waiting to run
Linux / debian:13 (push) Waiting to run
Linux / fedora:41 (push) Waiting to run
Linux / fedora:42 (push) Waiting to run
Linux / fedora:43 (push) Waiting to run
Linux / opensuse/leap:15.6 (push) Waiting to run
Linux / opensuse/leap:16.0 (push) Waiting to run
Linux / registry.suse.com/bci/bci-base:16.0 (push) Waiting to run
Linux / registry.suse.com/suse/sle15:15.6 (push) Waiting to run
Linux / registry.suse.com/suse/sle15:15.7 (push) Waiting to run
Linux / rockylinux/rockylinux:10 (push) Waiting to run
Linux / rockylinux:8 (push) Waiting to run
Linux / rockylinux:9 (push) Waiting to run
Linux / ubuntu:22.04 (push) Waiting to run
Linux / ubuntu:24.04 (push) Waiting to run
Linux / ubuntu:25.04 (push) Waiting to run
Linux / ubuntu:25.10 (push) Waiting to run
Windows / Windows (push) Waiting to run
CpuBoundWork#CpuBoundWork(): don't spin on atomic int to acquire slot
2026-03-26 15:21:13 +01:00
Yonas Habteab
4039b39061
Warn if object name contains ctrl characters
2026-03-26 15:01:15 +01:00
Yonas Habteab
da521203b1
Endpoint: warn if endpoint name exceeds 64 characters
2026-03-26 13:58:57 +01:00
Yonas Habteab
5a4cfae182
Warn of object name exceeds 255 characters
2026-03-26 13:58:57 +01:00
Yonas Habteab
2e6d23701a
Warn about leading and trailing WSP in object names
2026-03-26 13:58:57 +01:00
Julian Brost
ed403294a3
OutgoingHttpMessage: don't use shared_ptr for m_CpuBoundWork
...
This change just gives clear ownership over the CpuBoundWork to the
OutgoingHttpMessage, instead of the previous shared_ptr and weak_ptr
combination with an unclear purpose.
2026-03-26 11:47:45 +01:00
Johannes Schmidt
7d4af75189
Make ShowCodeLocation() show the full line with a LastColumn of 0
2026-03-24 13:53:31 +01:00
Alexander A. Klimov
85b16d2186
Remove unused IoEngine#m_AlreadyExpiredTimer
2026-03-19 14:53:29 +01:00
Alexander A. Klimov
7b45d8d625
Remove unused IoEngine::YieldCurrentCoroutine()
2026-03-19 14:53:29 +01:00
Alexander A. Klimov
cefa942c31
Make IoEngine#m_CpuBoundSemaphore unsigned
2026-03-19 14:53:29 +01:00
Alexander A. Klimov
06cfdbb650
CpuBoundWork#CpuBoundWork(): don't spin on atomic int to acquire slot
...
This is inefficient and involves possible bad surprises regarding
waiting durations on busy nodes. Instead, use `AsioConditionVariable#Wait()`
if there are no free slots. It's notified by others'
`CpuBoundWork#~CpuBoundWork()` once finished.
2026-03-19 14:53:29 +01:00
Alexander A. Klimov
c40c15ee11
Introduce AsioConditionVariable
2026-03-19 14:53:29 +01:00
Alexander A. Klimov
e03db5f71d
[Refactor] CpuBoundWork#CpuBoundWork(): require an io_context::strand
2026-03-19 14:53:29 +01:00
Alexander A. Klimov
149aecf3b9
CpuBoundWork#~CpuBoundWork(): just call #Done() to deduplicate code
2026-03-19 14:53:29 +01:00
Alexander A. Klimov
844b341225
Remove unused IoBoundWorkSlot
2026-03-19 14:53:29 +01:00
Alexander A. Klimov
fdc08c2e00
OutgoingHttpMessage#Flush(): release CpuBoundWork slot
...
so that `/v1/events` doesn't have to use `IoBoundWorkSlot`.
`IoBoundWorkSlot#~IoBoundWorkSlot()` will wait for a free semaphore slot
which will be almost immediately released by `CpuBoundWork#~CpuBoundWork()`.
Just releasing the already aquired slot manually is more efficient.
2026-03-19 14:51:19 +01:00