Description
Is your feature request related to a problem? Please describe.
Collector configuration requires listing receivers at least in 2 places: once in the top-level receivers
section and one more time the receivers
setting of the pipeline.
This gives flexibility to use the same receiver in more than one pipeline, but complicates the most common use case when the receiver is used in one pipeline only.
Every time a new receiver needs to be added, it needs to be added in 2 places in the config, which is annoying and error prone (and prevents an interesting use case described below).
Describe the solution you'd like
I would like to have a new group
receiver component that can instantiate other receivers. The config for example can look like this:
receivers:
group/all:
hostmetrics: ...
otlp: ....
redis: ...
service:
pipelines:
metrics:
receivers: [group/all]
processors: ...
exporters: ...
With a config like this if I need to add or remove a receiver I only need to do it in one place, under the group/all
section.
Functionality the group
component will be a significantly simplified version of the existing receivercreator component.
The exact same problem applies to processors and exporters for which equivalent processor group
and exporter group
component would be also highly desirable.
Additional context
Here is a use case.
We can break down Collector config file into smaller, more manageable config files, where receivers, processors and exporters are in their own files. For example:
# this is the main config file
receivers:
group/all: ${file: receivers.yaml}
processors:
group/all: ${file: processors.yaml}
exporters:
group/all: ${file: exporters.yaml}
service:
pipelines:
metrics:
receivers: [group/all]
processors: [group/all]
exporters: [group/all]
# this is receivers.yaml
hostmetrics: ...
otlp: ...
redis: ...
# this is exporters.yaml
otlphttp:
endpoint: ...