Skip to content

Conversation

@alexandra5000
Copy link
Collaborator

@alexandra5000 alexandra5000 commented Dec 7, 2025

Summary

This PR adds a new documentation page titled “EDOT data streams”, addressing recurring user questions.

The new page explains:

  • Why EDOT configurations sometimes include two exporters (otel and ecs)

  • Which data streams are populated by EDOT in OTel-native and ECS/APM-compatible modes

  • Differences in data streams between mOTLP and local EDOT deployments

  • Why some fields appear duplicated

  • Which storage engines are used (TSDB, LogsDB)

Closes #3501

Generative AI disclosure

Did you use a generative AI (GenAI) tool to assist in creating this contribution?

  • Yes
  • No

If you answered "Yes" to the previous question, please specify the tool(s) and model(s) used (e.g., Google Gemini, OpenAI ChatGPT-4, etc.).

Tool(s) and model(s) used:
Claude 4.5 Sonnet via Cursor

@github-actions
Copy link
Contributor

github-actions bot commented Dec 7, 2025

Vale Linting Results

Summary: 19 suggestions found

💡 Suggestions (19)
File Line Rule Message
docs/reference/compatibility/data-streams.md 23 Elastic.WordChoice Consider using 'refer to (if it's a document), view (if it's a UI element)' instead of 'see', unless the term is in the UI.
docs/reference/compatibility/data-streams.md 45 Elastic.Acronyms 'ECS' has no definition.
docs/reference/compatibility/data-streams.md 48 Elastic.Acronyms 'ECS' has no definition.
docs/reference/compatibility/data-streams.md 49 Elastic.WordChoice Consider using 'refer to (if it's a document), view (if it's a UI element)' instead of 'See', unless the term is in the UI.
docs/reference/compatibility/data-streams.md 53 Elastic.Acronyms 'ECS' has no definition.
docs/reference/compatibility/data-streams.md 125 Elastic.Acronyms 'ECS' has no definition.
docs/reference/compatibility/data-streams.md 125 Elastic.Acronyms 'ECS' has no definition.
docs/reference/compatibility/data-streams.md 153 Elastic.Acronyms 'ECS' has no definition.
docs/reference/compatibility/data-streams.md 153 Elastic.Acronyms 'ECS' has no definition.
docs/reference/data-streams.md 3 Elastic.Acronyms 'ECS' has no definition.
docs/reference/data-streams.md 19 Elastic.Acronyms 'ECS' has no definition.
docs/reference/data-streams.md 27 Elastic.Acronyms 'ECS' has no definition.
docs/reference/data-streams.md 40 Elastic.Acronyms 'TSDB' has no definition.
docs/reference/data-streams.md 46 Elastic.Acronyms 'ECS' has no definition.
docs/reference/data-streams.md 70 Elastic.Acronyms 'ECS' has no definition.
docs/reference/data-streams.md 78 Elastic.WordChoice Consider using 'can, might' instead of 'may', unless the term is in the UI.
docs/reference/data-streams.md 87 Elastic.Acronyms 'ECS' has no definition.
docs/reference/data-streams.md 89 Elastic.Acronyms 'ECS' has no definition.
docs/reference/data-streams.md 111 Elastic.Acronyms 'ECS' has no definition.

@github-actions
Copy link
Contributor

github-actions bot commented Dec 7, 2025

🔍 Preview links for changed docs

Copy link
Collaborator

@theletterf theletterf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very useful doc! I suggest a review by @carsonip and @AlexanderWert

Copy link
Member

@carsonip carsonip left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks

Copy link
Member

@carsonip carsonip left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

May be good to have @felixbarny 's 👀 too

Comment on lines 104 to 110
## Storage engines used by EDOT

| Data type | Storage engine |
|-----------|----------------|
| Metrics | TSDB (`mode: time_series`) |
| Logs | LogsDB |
| Traces | Standard time-series model |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure what's the audience of this doc, but mapping EDOT to storage engine is not that simple. EDOT is responsible for sending to a data stream, and depending on which data stream it sends to, different index templates may apply, and the index templates decide what storage engine is used.

e.g. EDOT with otel mapping mode sends to otel data streams, and the table is correct. But EDOT with ecs mapping mode sending to apm data streams, the table will be incorrect.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, I should have known it wouldn't be that simple 😄 I decided to let go of the table altogether in favor of a more descriptive approach that hopefully captures the "it depends" reality better.


### ECS-compatible mode

When the `ecs` exporter is enabled, or when ingesting data from {{product.apm}} agents using `elasticapmintake`, EDOT writes to:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does elasticapmintake decide the destination data stream?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We're in the process of removing the mapping mode configuration and we should avoid mentioning the mapping mode, particularly the legacy ecs mapping mode in the configuration.

From Felix's comment, apparently yes

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At least, this is how we should do it. @gregkalapos to double-check if we're already doing it like that.


To learn how to route OpenTelemetry (OTel) signals to custom data streams, refer to [Data stream routing](docs-content://solutions/observability/apm/opentelemetry/data-stream-routing.md).

## Exporter behavior: `otel` and `ecs`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We're in the process of removing the mapping mode configuration and we should avoid mentioning the mapping mode, particularly the legacy ecs mapping mode in the configuration.

There's probably still a need to document the behavior of the elasticapmintake receiver, which internally instructs the exporter to use the ecs mode. But that's an implementation detail we shouldn't mention. What's relevant to the user is that the elasticapmintake is running in a compatibility mode where it produces documents similar to what APM server was doing. However, we should make clear that this is only intended for migration use cases and we should steer users towards using OTel SDKs.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I changed the page to reflect that and made it clear that the ecs mode is for backwards compatibility only. If you think a more drastic change is warranted (e.g. removing any mention of the mapping modes), let me know.

@alexandra5000
Copy link
Collaborator Author

@carsonip @felixbarny - does it look ok to you after the most recent changes? LMK if I can merge this!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Internal]: EDOT Collector setups and populated data streams

4 participants