Skip to content

[Change Proposal] Support OTel input packages that collect data with multiple signal types #1023

@jsoriano

Description

@jsoriano

Package policies for input packages are currently designed to collect a single signal type, and send it to a single data stream.

In the case of OTel, a single receiver can collect multiple signal types if it is connected to pipelines of different types, as seen in elastic/integrations#16003

Changes in package-spec

  • Define a new field available_types in the manifest that allows the author to specify the signal types available for the package, for instance:
available_types: [logs, metrics, traces]

Changes in Fleet

  • Generate a different transform for each signal defined in available_types - example in case of all three signals present:
processors:
  transform/foo
    log_statements: 
      - set(attributes["data_stream.type"], "logs")
      - set(attributes["data_stream.dataset"], "<policy_template_name>")
      - set(attributes["data_stream.namespace"], "<namespace>")
    metric_statements: 
      - set(attributes["data_stream.type"], "metrics")
      - set(attributes["data_stream.dataset"], "<policy_template_name>")
      - set(attributes["data_stream.namespace"], "<namespace>")
    trace_statements: 
      - set(attributes["data_stream.type"], "traces")
      - set(attributes["data_stream.dataset"], "<policy_template_name>")
      - set(attributes["data_stream.namespace"], "<namespace>")
  • in case of for OTel input packages, update the UI element in "advanced options" that allows to select the datastream type so that the radio buttons for data stream type conform to the configured available_types.
    e.g. a user can toggle between logs or metrics when available_types: [logs, metrics] is set, but can't select traces
Image

The changes can be tested by compiling the test package defined in elastic/integrations#16003 with the new available_types field.

Original description We have to design how this should work, as this has some implications, between them: * There are currently UI elements to select the data stream type, should they be disabled for OTel input packages with multiple pipelines? * Should support for multiple signal types in a package detected automatically or indicated by some flag in the manifest? * How would routing work? Using fixed indexes in the exporter, different transforms for different dynamic mappings? Routing on ingestion? Should this be configurable per package? ...

Metadata

Metadata

Assignees

Labels

Team:EcosystemLabel for the Packages Ecosystem teamdiscussIssue needs discussion

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions