[9.0](backport #7328) Allow switching inputs to the otel runtime manager#7962
[9.0](backport #7328) Allow switching inputs to the otel runtime manager#7962
Conversation
|
Pinging @elastic/elastic-agent-control-plane (Team:Elastic-Agent-Control-Plane) |
⏳ Build in-progress, with failures
Failed CI Steps
Historycc @swiatekm |
|
The CI fails with this error I think this is because beats version is not updated in |
* Add runtime manager field to component model * Store runtime manager value on the Component level * Support component runtime manager in coordinator * Change `runtime` to `_runtime_experimental` * Log component ids using the otel runtime * Fix integration test * Make component ordering consistent * Fix slice allocation Co-authored-by: Panos Koutsovasilis <panos.koutsovasilis@elastic.co> --------- Co-authored-by: Panos Koutsovasilis <panos.koutsovasilis@elastic.co> (cherry picked from commit 18d8dff)
d2bbd68 to
41298f5
Compare
It'll be unblocked by #7953, this branch points to the beats main branch right now. |
|
QQ. Shouldn't "9.0-elastic-agent" branch point to the head of beats 9.0? So that we do not bring in changes not targeted to 9.0? I had a similar comment from @cmacknz here #7676 (comment) |
It should, yes. But I wanted to wait until the workstream meeting on Monday to hash out which changes need to go into which branches, exactly. In the meantime, we can merge both this PR and the ones depending on it. |
|




What does this PR do?
Allows switching individual inputs to the Otel runtime manager. This is done by introducing a new configuration field:
_runtime_experimentalwith possible values ofprocess(the default) andotel. It is no longer necessary to modify agent code and build a local binary to run inputs as beats receivers in an otel collector.This change is only intended for testing, and the configuration is not stable. See https://github.com/elastic/ingest-dev/issues/5117 for more details. Its only effect on users not opting in to using the otel runtime is that diagnostics now unconditionally emit an additional file containing the final otel collector configuration.
In terms of implementation, we add a new field to Components in the component model, and ensure inputs with a different runtime manager setting end up in different Components.
Why is it important?
It will make testing beats receivers in agent a lot easier. The component model machinery is also easy to repurpose even if we ultimately decide this needs to be configured differently.
Checklist
How to test this PR locally
Build the agent binary and use the following configuration:
Related issues
Implements the agent part of https://github.com/elastic/ingest-dev/issues/5117. It's possible the actual config key and values will change, but the changes to the component model should be universal.
This is an automatic backport of pull request #7328 done by [Mergify](https://mergify.com).