-
Notifications
You must be signed in to change notification settings - Fork 4.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Elastic Agent] Refactor general Beats settings #20679
Comments
Pinging @elastic/ingest-management (Team:Ingest Management) |
Pinging @elastic/integrations-services (Team:Services) |
Why do we need this to be a global setting? Why is it a global setting in metricbeat? Is the future to have it always enabled? |
I've been thinking about this again and I'm hesitant to implement a generic way on how to support the global configs. I think we should tackle it one by one when we have a need / request for a certain feature and if we see a pattern after 2-3 changes, we should find a generic solution instead of doing it upfront. I went again through all existing config options and I think there are cases, where we even come up with new solutions. Variables in the config and keystore are two good examples here. With the "dynamic input" change, both of these are likely to be supported in the future. So my proposal is to close this issue and open specific issues for configs that are not supported and need to support so we can discuss one by one. |
@ruflin I agree with that. So +1 to close it and let it drive by user requests/need. This also reduce our cognitive load to an MVP/GA. |
SGTM |
+1 |
Today Beats offers several global and general configuration options https://www.elastic.co/guide/en/beats/metricbeat/current/configuration-general-options.html. As we move to a single Elastic Agent policy, we want to refactor these settings and decide what makes sense to have at the Agent level, the process level, and the input level. I've combined input from @urso and @ruflin on the description below:
Lets take seccomp as an example: Will seccomp be per process or do we have a global seccomp? seccomp rules must be enforced at process level. If we create input configurations with different seccomp settings, then the Agent would need to create a process per 'profile'.
Another example for metricbeat is
timeseries.enabled
. This seems to be a very input specific config but if one metric input has it on and the other one off, we need to run two processes. Why is this setting enforced at a global level already? The setting just changes how events are reported. Do we really need this, or will anadd_fields
processor do the trick?Overall, I think we need a general approach on how we handle these. I think a few like seccomp must become a global feature in the Agent. The others which are process specific, we probably need an expert mode where someone can specify these in the config and name the actual process. Something like:
process.metric.timeseries.enabled: true
whereprocess.metric
can be mapped to either metricbeat or the collector in the future. This will allow us to migrate the backend to the collector without breaking changes.Besides global settings we have 'internal' behavior of Beats that we might want to expose as settings. E.g. Filebeat sets up infinite retry for it's inputs by default. Actually inputs can overwrite this, but we don't expose any setting to do so. Creating a PR to introduce a per input setting like
send_mode: guaranteed/retry
will be quite straight forward for filebeat. Are we interested in a setting like this for Metricbeat as well?Suggestions for global settings we have for all Beats:
The others which are process specific, we probably need an expert mode where someone can specify these in the config and name the actual process. Something like:
process.metricbeat.timeseries.enabled: true
. I'd prefer to to introduce an expert mode like this. On the other hand I'm not sure where/how to apply resource limit settings. Interestingly our output settings define/translate to named 'pipelines' internally. Although the namespace is output, to me it feels quite natural to apply limit settings to the per pipeline settings.The text was updated successfully, but these errors were encountered: