Skip to content

Add Elastic APM Intake OpenTelemetry Input Package#17114

Merged
teresaromero merged 26 commits into
mainfrom
claude/issue-17113-20260129-0904
May 12, 2026
Merged

Add Elastic APM Intake OpenTelemetry Input Package#17114
teresaromero merged 26 commits into
mainfrom
claude/issue-17113-20260129-0904

Conversation

@jlind23
Copy link
Copy Markdown
Contributor

@jlind23 jlind23 commented Jan 29, 2026

Proposed commit message

Add Elastic APM Intake OpenTelemetry Input Package

WHAT: Introduces a new input package elasticapm_input_otel (v0.1.0) that configures the EDOT (Elastic Distribution of OpenTelemetry) Collector to receive APM data from Elastic APM agents using the upstream elasticapmintakereceiver. The package is multi-signal — dynamic_signal_types: true advertises traces, metrics, and logs in a single policy template, matching the receiver's registered consumers (WithLogs / WithMetrics / WithTraces, all alpha stability per the upstream metadata.yaml).

User-facing configuration exposed in the manifest:

  • endpoint (default localhost:8200) — bind address for the intake listener.
  • tls_enabled + tls_cert_file / tls_key_file / tls_client_ca_file — TLS, including mTLS via the optional client CA file. The template renders cert/key/CA fields conditionally on the corresponding values being set, so a misconfiguration surfaces as a schema error rather than an empty path.
  • auth_enabled + auth_elasticsearch_endpoint — gates the apikeyauth extension, which validates Elastic APM API keys against an Elasticsearch cluster (apm/event:write privileges, resources [-]).
  • data_stream.dataset (default elasticapmintakereceiver) — lets users route APM data into an alternate dataset, mirroring the convention used by otlp_input_otel.

Pipeline shape: the rendered collector config wires elasticapmintake into separate logs, metrics, and traces pipelines, all running through resourcedetection/system. The transform processor injected by Fleet routes spanevent context into the logs data stream alongside standalone APM logs.

Test fixture:

  • Policy tests (_dev/test/policy/): test-default, test-auth (apikeyauth + ES endpoint), test-tls (cert + key) — all with regenerated *.expected snapshots.
  • System tests (_dev/test/system/): test-default-config.yml (smoke, any data lands) plus three per-signal configs — test-only-logs-config.yml (signal_types: [logs]), test-only-metrics-config.yml (signal_types: [metrics]), and test-only-traces-config.yml (signal_types: [traces, logs], paired because span events route into the logs stream). All four use min_count: 50 and rely on service_notify_signal: SIGHUP for startup synchronization.
  • Docker test service (_dev/deploy/docker/): a Go HTTP server instrumented with the Elastic APM Go agent. Bumped to Go 1.26, alpine 3.22, go.elastic.co/apm/v2 v2.7.8 (and apmhttp/v2, apmzap/v2), go.uber.org/zap v1.28.0. The service emits all three signal types — apmhttp transactions plus three custom child spans (db / cache / external) per request, custom counter/histogram metrics through a registered metrics gatherer, and apmzap Error logs (with trace context). It blocks on SIGHUP until the agent applies the policy, then runs continuous load until SIGTERM.
  • Sample events: sample_event_logs.json, sample_event_metrics.json, sample_event_traces.json, plus sample_event.json for backward compatibility.

WHY: Enables existing Elastic APM agents to send telemetry to an OpenTelemetry Collector instead of directly to APM Server, supporting OTel-based observability pipelines. APM data can be processed alongside other OTel sources before export to Elasticsearch, without retrofitting agents to native OTLP.

Known limitations (documented in the README): central agent configuration fetching (AgentConfig.Elasticsearch on the receiver) is not exposed by this package and remains disabled. RUM intake and pre-V2 protocols are out of scope — only APM Intake V2 is supported.

Checklist

  • I have reviewed tips for building integrations and this pull request is aligned with them.
  • I have verified that all data streams collect metrics or logs.
  • I have added an entry to my package's changelog.yml file.
  • I have verified that Kibana version constraints are current according to guidelines.
  • I have verified that any added dashboard complies with Kibana's Dashboard good practices — N/A, no dashboards in this initial release.

Author's Checklist

  • elastic-package check passes locally.
  • Policy tests render without diff against _dev/test/policy/*.expected.
  • System tests pass for the default config and for each per-signal (logs, metrics, traces) config against a local stack.
  • Docker test app builds on Go 1.26 with apm-agent-go v2.x.
  • End-to-end verification with a real APM agent (non-Go) pointed at the collector endpoint — optional follow-up.

How to test this PR locally

  1. Validate the package: cd packages/elasticapm_input_otel && elastic-package check.
  2. Bring up an Elastic stack: elastic-package stack up -v -d.
  3. Run policy tests: elastic-package test policy -v.
  4. Run system tests (the docker test service is automatically deployed): elastic-package test system -v. Each per-signal config asserts that its data stream — logs-*-*, metrics-*-*, or traces-*-* — receives at least 50 events from the Go test app.
  5. Manual smoke (optional):
    • Add the integration to an agent policy in Fleet, choose endpoint 0.0.0.0:8200 if you intend to send from another host.
    • Point an Elastic APM agent at the collector (ELASTIC_APM_SERVER_URL=http://<host>:8200).
    • Verify documents in Kibana Discover under traces-*, metrics-*, and logs-* with data_stream.dataset=elasticapmintakereceiver (or a custom dataset if overridden).
    • For TLS, set tls_enabled: true and provide both tls_cert_file and tls_key_file; for API-key auth, set auth_enabled: true and supply an auth_elasticsearch_endpoint reachable from the agent.

Related issues

Screenshots

This package enables the EDOT Collector to receive APM data from Elastic
APM agents using the elasticapmintakereceiver. It allows existing Elastic
APM agents to send telemetry data to an OpenTelemetry Collector instead
of directly to APM Server.

Key features:
- Accepts APM Intake V2 protocol data (traces, metrics, logs)
- Configurable endpoint for APM agent connections
- Optional TLS/mTLS support for encrypted connections
- Optional agent configuration fetching from Elasticsearch

Closes #17113

Co-authored-by: Julien Lind <jlind23@users.noreply.github.com>
@jlind23 jlind23 self-assigned this Jan 29, 2026
@jlind23 jlind23 requested a review from a team as a code owner January 29, 2026 09:24
@jlind23
Copy link
Copy Markdown
Contributor Author

jlind23 commented Jan 29, 2026

@claude review this please

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jan 29, 2026

Claude finished @jlind23's task in 1m 35s —— View job


PR Review Complete

I've reviewed this PR which adds a new elasticapm_input_otel package for receiving APM data from Elastic APM agents via the EDOT Collector. The package passes elastic-package check.

Overall: The package structure follows the established patterns for OTel input packages. I have a few observations and one issue to address.


🟡 Medium - Changelog Link References Wrong PR Number

File: packages/elasticapm_input_otel/changelog.yml:6

The changelog references PR #17113, but this is PR #17114. The link should point to the current PR.

link: https://github.com/elastic/integrations/pull/17113

Should be:

link: https://github.com/elastic/integrations/pull/17114

Fix this →


⚪ Low - Naming Inconsistency (Author's Discretion)

Files: packages/elasticapm_input_otel/manifest.yml:2 vs folder name

There's a minor inconsistency between the folder name and the package name in the manifest:

  • Folder: elasticapm_input_otel
  • Package name: elasticapm_otel_input

The nginx_input_otel package follows the same pattern (folder nginx_input_otel, name nginx_otel_input), so this appears to be intentional. Just flagging for awareness.


💬 Nitpicks / Observations

  1. Documentation: The docs are comprehensive and well-structured. The {{ inputDocs }} template is used appropriately in the build template.

  2. TLS Config: The conditional TLS configuration in input.yml.hbs is well-implemented, only including TLS settings when enabled.

  3. Policy Test: The expected policy test output at _dev/test/policy/test-default.expected correctly shows the transform processor adding data stream attributes.

  4. Docker Compose: The docker-compose file includes a basic nginx service for testing connectivity. This is adequate for policy tests, though integration testing with actual APM agents would require additional setup.


Summary

This is a well-structured package. The only actionable item is fixing the changelog link to reference the correct PR number (#17114 instead of #17113).

Recommendation: COMMENT (non-blocking) - fix the changelog link before merge.



Why is Claude responding? | Type @claude to interact further

Give us feedback! React with 🚀 if perfect, 👍 if helpful, 👎 if not.

Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

The package structure looks good and follows the existing patterns for OTel input packages. One issue to address:

Changelog link points to wrong URL: The changelog links to issue #17113 instead of this PR #17114.

The package passes elastic-package check validation. The TLS configuration follows the same pattern as other packages (universal_profiling_collector, apm).


Why is Claude responding? | Type @claude to interact further

Give us feedback! React with 🚀 if perfect, 👍 if helpful, 👎 if not.

Comment thread packages/elasticapm_input_otel/changelog.yml Outdated
@jlind23
Copy link
Copy Markdown
Contributor Author

jlind23 commented Jan 29, 2026

@mrodm The policy test was failing inconsistently because Fleet/Kibana assigns component IDs non-deterministically when there are multiple signal types (traces, metrics, logs). The component IDs like logs/componentid-2, metrics/componentid-1, traces/componentid-0 would change between test runs. Any chance there is a way to set fixed component id?

Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

The agent configuration feature (agent_config_enabled) is incomplete. The elasticapmintakereceiver requires an agent_config.elasticsearch configuration block with connection settings to fetch APM Central Configurations from Elasticsearch. Without exposing these settings, enabling agent_config will cause runtime failures.

Options to address:

  1. Add elasticsearch connection variables (endpoint, API key/credentials) to the manifest and template
  2. Remove the agent_config feature until it can be fully implemented
  3. Document that agent_config requires additional manual configuration outside of this package

Additionally, consider making TLS cert/key fields visible (show_user: true) when TLS is enabled, as users need to provide these paths.


Why is Claude responding? | Type @claude to interact further

Give us feedback! React with 🚀 if perfect, 👍 if helpful, 👎 if not.

Comment thread packages/elasticapm_input_otel/manifest.yml Outdated
Comment thread packages/elasticapm_input_otel/agent/input/input.yml.hbs Outdated
Comment thread packages/elasticapm_input_otel/manifest.yml
@jlind23
Copy link
Copy Markdown
Contributor Author

jlind23 commented Jan 29, 2026

Converting this back to draft for now since this is blocked on multi-signal support: elastic/package-spec#1023

@jlind23 jlind23 marked this pull request as draft January 29, 2026 10:31
@mrodm
Copy link
Copy Markdown
Collaborator

mrodm commented Jan 29, 2026

@mrodm The policy test was failing inconsistently because Fleet/Kibana assigns component IDs non-deterministically when there are multiple signal types (traces, metrics, logs). The component IDs like logs/componentid-2, metrics/componentid-1, traces/componentid-0 would change between test runs. Any chance there is a way to set fixed component id?

@jlind23 taking a look.
I've been able to reproduce the failure locally.

@mrodm
Copy link
Copy Markdown
Collaborator

mrodm commented Jan 29, 2026

@mrodm The policy test was failing inconsistently because Fleet/Kibana assigns component IDs non-deterministically when there are multiple signal types (traces, metrics, logs). The component IDs like logs/componentid-2, metrics/componentid-1, traces/componentid-0 would change between test runs. Any chance there is a way to set fixed component id?

@jlind23 taking a look. I've been able to reproduce the failure locally.

@jlind23 Looking at the test policy, I think the expected test case should be updated to set first traces, then metrics and finally logs in the service.pipelines section:

--- packages/elasticapm_input_otel/_dev/test/policy/test-default.expected
+++ packages/elasticapm_input_otel/_dev/test/policy/test-default.expected
@@ -36,12 +36,12 @@ receivers:
 secret_references: []
 service:
     pipelines:
-        logs:
+        traces:
             exporters:
                 - elasticsearch/componentid-0
             receivers:
                 - forward
-        logs/componentid-0:
+        traces/componentid-0:
             exporters:
                 - forward
             processors:
@@ -62,12 +62,12 @@ service:
                 - transform/componentid-1
             receivers:
                 - elasticapmintake/componentid-0
-        traces:
+        logs:
             exporters:
                 - elasticsearch/componentid-0
             receivers:
                 - forward
-        traces/componentid-2:
+        logs/componentid-2:
             exporters:
                 - forward
             processors:

That is the same order that appears in the input.yml.hbs file.
I did some test modifying the order in that file, and the expected test case should follow the same one.

I think the input.yml.hbs could also be removed the /0 from the pipelines identifiers:

--- packages/elasticapm_input_otel/agent/input/input.yml.hbs
+++ packages/elasticapm_input_otel/agent/input/input.yml.hbs
@@ -16,12 +16,12 @@ processors:
     detectors: ["system"]
 service:
   pipelines:
-    traces/0:
+    traces:
       receivers: [elasticapmintake]
       processors: [resourcedetection/system]
-    metrics/0:
+    metrics:
       receivers: [elasticapmintake]
       processors: [resourcedetection/system]
-    logs/0:
+    logs:
       receivers: [elasticapmintake]
       processors: [resourcedetection/system]

@andrewkroh andrewkroh added New Integration Issue or pull request for creating a new integration package. documentation Improvements or additions to documentation. Applied to PRs that modify *.md files. labels Jan 29, 2026
@jlind23 jlind23 assigned teresaromero and unassigned jlind23 Feb 6, 2026
- Bump manifest format version to 3.6.0.
- Add support for API key authentication and related configuration options.
- Introduce new variables for TLS client CA file and API key validation endpoint.
- Update README to include API key authentication details and examples.
- Add new test policies for authentication and TLS configurations.
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 6, 2026

✅ Vale Linting Results

No issues found on modified lines!


The Vale linter checks documentation changes against the Elastic Docs style guide.

To use Vale locally or report issues, refer to Elastic style guide for Vale.

Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

The package has one issue that must be fixed before merge:

elastic-package check fails: The docs/README.md file contains a troubleshooting bullet point that doesn't exist in the source template (_dev/build/docs/README.md). Either add the missing content to the source template and rebuild, or remove it from docs/README.md by running elastic-package build.

Run elastic-package check locally to verify the fix.


Why is Claude responding? | Type @claude to interact further

Give us feedback! React with 🚀 if perfect, 👍 if helpful, 👎 if not.

Comment thread packages/elasticapm_input_otel/_dev/deploy/docker/docker-compose.yml Outdated
traces:
receivers: [elasticapmintake]
processors: [resourcedetection/system]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

💬 NITPICK Trailing whitespace and blank line

Why: Template has a trailing blank line with spaces at the end

Suggested change
processors: [resourcedetection/system]

Why is Claude responding? | Type @claude to interact further

Give us feedback! React with 🚀 if perfect, 👍 if helpful, 👎 if not.

Comment thread packages/elasticapm_input_otel/_dev/build/docs/README.md
…README.md to streamline troubleshooting section.
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

Package Validation Failures

elastic-package check fails with two errors:

  1. format_version: 3.6.0 is still unreleased (currently "3.6.0-next" in package-spec)
  2. dynamic_signal_types property is not allowed in the current spec

Fix: Either downgrade to format_version: 3.5.0 and remove dynamic_signal_types, or wait for the 3.6.0 spec release.

Additionally, the test plan in the PR description shows policy tests are unchecked - these should be verified before merge.


Why is Claude responding? | Type @claude to interact further

Give us feedback! React with 🚀 if perfect, 👍 if helpful, 👎 if not.

Comment thread packages/elasticapm_input_otel/manifest.yml
Comment thread packages/elasticapm_input_otel/manifest.yml
Comment thread packages/elasticapm_input_otel/manifest.yml Outdated
Comment thread packages/elasticapm_input_otel/_dev/deploy/docker/docker-compose.yml Outdated
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

Package Validation Fails

elastic-package check fails with validation errors due to using unreleased package spec features:

Error: checking package failed: linting package failed: found 2 validation errors:
   1. file "manifest.yml" is invalid: field conditions: agent is required
   2. file "manifest.yml" is invalid: field policy_templates.0: Additional property dynamic_signal_types is not allowed

Root Cause

The package uses format_version: 3.6.0 which is still 3.6.0-next (unreleased) in the package-spec. The dynamic_signal_types field was added in version 3.6.0 but is not yet available.

Options to Fix

  1. Wait for package-spec 3.6.0 release - Coordinate with the package-spec maintainers to ensure 3.6.0 is released before merging this PR.

  2. Downgrade to format_version 3.5.6 - Remove the dynamic_signal_types field and update format_version to 3.5.6. The package may lose automatic signal type handling, but will be valid.

Other Notes

  • TLS and API key authentication options reference conditionally required fields (cert/key files, ES endpoint) that aren't validated at schema level. This is acceptable given Fleet UI limitations, but ensure documentation clearly communicates these dependencies.

Why is Claude responding? | Type @claude to interact further

Give us feedback! React with 🚀 if perfect, 👍 if helpful, 👎 if not.

Comment thread packages/elasticapm_input_otel/manifest.yml
Comment thread packages/elasticapm_input_otel/manifest.yml
Comment thread packages/elasticapm_input_otel/_dev/deploy/docker/docker-compose.yml Outdated
Comment thread packages/elasticapm_input_otel/manifest.yml
Comment thread packages/elasticapm_input_otel/manifest.yml
@botelastic
Copy link
Copy Markdown

botelastic Bot commented Mar 26, 2026

Hi! We just realized that we haven't looked into this PR in a while. We're sorry! We're labeling this issue as Stale to make it hit our filters and make sure we get back to it as soon as possible. In the meantime, it'd be extremely helpful if you could take a look at it as well and confirm its relevance. A simple comment with a nice emoji will be enough :+1. Thank you for your contribution!

@botelastic botelastic Bot added the Stalled label Mar 26, 2026
@andrewkroh andrewkroh removed the New Integration Issue or pull request for creating a new integration package. label Apr 23, 2026
@botelastic botelastic Bot removed the Stalled label Apr 23, 2026
…ceiver

- Removed unsupported agent configuration options from the manifest.
- Enhanced descriptions for endpoint, TLS settings, and API key authentication in the manifest and README.
- Added a new optional field for Data Stream Dataset to allow customization of the dataset used for routing APM data.
- Updated expected test outputs to reflect changes in the configuration structure.
- Improved clarity in README regarding connection settings for remote APM agents.
…M Input

- Introduced sample_event_logs.json, sample_event_metrics.json, and sample_event_traces.json to provide example data structures for logging, metrics, and tracing.
- Updated sample_event.json with new timestamps, IDs, and runtime information.
- Added new configuration files for testing logs, metrics, and traces, ensuring a minimum count of 50 for assertions.
- Adjusted the default configuration to reflect the new testing requirements.
…APM Input

- Updated sample_event_logs.json, sample_event_metrics.json, and sample_event_traces.json with new timestamps, IDs, and runtime information.
- Adjusted sample_event.json to reflect changes in error attributes and stack traces.
- Modified Dockerfile to use Go 1.26 and Alpine 3.22, ensuring compatibility with updated dependencies.
- Updated go.mod and go.sum to reflect new versions of Elastic APM modules and other dependencies.
@teresaromero teresaromero marked this pull request as ready for review May 7, 2026 09:42
- Corrected wording from "older protocols" to "earlier protocols" for clarity.
- Changed example index search instruction from "e.g." to "for example" to enhance readability.
Comment thread .github/CODEOWNERS Outdated
/packages/elastic_connectors @elastic/search-extract-and-transform
/packages/elastic_package_registry @elastic/ecosystem
/packages/elastic_security @elastic/security-service-integrations
/packages/elasticapm_input_otel @elastic/obs-ds-intake-services
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

i dont recall if this was correct or ecosystem should take ownership for betas?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I think it would be ecosystem here, @kpollich ?

@teresaromero teresaromero requested a review from a team May 7, 2026 10:14
Comment thread packages/elasticapm_input_otel/img/logo_apm.svg
Comment thread packages/elasticapm_input_otel/manifest.yml Outdated
Comment on lines +12 to +13
receivers:
elasticapmintake:
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

In the documentation is mentioned to add agent_config:

receivers:
  elasticapmintake:
    agent_config:
      enabled: false

https://github.com/elastic/opentelemetry-collector-components/tree/main/receiver/elasticapmintakereceiver#getting-started

Should we add that unconditionally ?

Reviewing at the code, maybe it can be left for now out ? Since it looks like that by default would be false ? Please, could you check this ?

https://github.com/elastic/opentelemetry-collector-components/blob/8da56e7f281694a146e0f3cc76477ff5ff16dc64/receiver/elasticapmintakereceiver/config.go#L35-L47

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

As default was false i left it out. I also dont see any documentation regarding the use of the option. Looking around the docs and elastic I see this is opt-in to make changes on the agent management, more than the intake mechanism of it...

the go struct is a bool https://github.com/elastic/opentelemetry-collector-components/blob/8da56e7f281694a146e0f3cc76477ff5ff16dc64/receiver/elasticapmintakereceiver/config.go#L37 so when option is not set, it gets zero value false also.

We can add it, with a note, referring to the official docs, to make it redundant and input developers aware of this option. wdyt?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

We can add it, with a note, referring to the official docs, to make it redundant and input developers aware of this option. wdyt?

I think this option could be good for now. We could add it as hard-coded settings in the agent template. Looking at the code and as you mentioned, setting that to false should be the default behavior.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

updated on latest commit this, policies expected too and codeowners

Comment thread .github/CODEOWNERS Outdated
/packages/elastic_connectors @elastic/search-extract-and-transform
/packages/elastic_package_registry @elastic/ecosystem
/packages/elastic_security @elastic/security-service-integrations
/packages/elasticapm_input_otel @elastic/obs-ds-intake-services
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I think it would be ecosystem here, @kpollich ?

- Redesigned the logo SVG to enhance visual clarity and modernize the appearance.
- Adjusted dimensions and added new graphical elements for improved aesthetics.
- Changed the default dataset name from 'elasticapmintakereceiver' to 'generic' to align with updated configuration standards.
- This change ensures compatibility with new data routing requirements.
…M Input

- Updated the dataset name from 'elasticapmintakereceiver' to 'generic' in expected test output files to ensure consistency across tests.
- This change aligns with recent updates to configuration standards and improves compatibility with data routing requirements.
…c APM Input

- Updated timestamps in sample_event_logs.json, sample_event_metrics.json, sample_event_traces.json, and sample_event.json to reflect the latest data.
- Changed IDs and dataset names to 'generic' for consistency across all sample files.
- Adjusted host information to ensure alignment with recent changes in the environment.
- Changed the owner in the CODEOWNERS file for the elasticapm_input_otel package from @elastic/obs-ds-intake-services to @elastic/ecosystem for better alignment with project ownership.
- Updated the owner in the manifest.yml file for the elasticapm_input_otel package to reflect the new ownership structure.
- Added agent_config settings in expected test output files to disable the agent configuration by default, ensuring consistency across test cases.
@elasticmachine
Copy link
Copy Markdown

💚 Build Succeeded

History

cc @teresaromero

Copy link
Copy Markdown
Collaborator

@mrodm mrodm left a comment

Choose a reason for hiding this comment

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

LGTM

@andrewkroh andrewkroh added the New Integration Issue or pull request for creating a new integration package. label May 11, 2026
@teresaromero teresaromero merged commit a224134 into main May 12, 2026
13 checks passed
@teresaromero teresaromero deleted the claude/issue-17113-20260129-0904 branch May 12, 2026 06:48
@elastic-vault-github-plugin-prod
Copy link
Copy Markdown

Package elasticapm_input_otel - 0.1.0 containing this change is available at https://epr.elastic.co/package/elasticapm_input_otel/0.1.0/

@andrewkroh andrewkroh added the Integration:elasticapm_input_otel Elastic APM Intake OpenTelemetry Input Package label May 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation. Applied to PRs that modify *.md files. Integration:elasticapm_input_otel Elastic APM Intake OpenTelemetry Input Package New Integration Issue or pull request for creating a new integration package.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Create Input Package: Elastic APM intake receiver

5 participants