From d9f57ca116317c4024e0d6fa59d06e1f9888b7a2 Mon Sep 17 00:00:00 2001 From: Colleen McGinnis Date: Fri, 11 Apr 2025 12:49:07 -0500 Subject: [PATCH] remove otel content --- docs/en/apm-server/redirects.asciidoc | 8 +- .../apm/api/apm-server/api-otlp.asciidoc | 4 +- .../collect-application-data/index.asciidoc | 26 ++- .../open-telemetry/index.asciidoc | 104 +---------- .../open-telemetry/otel-attrs.asciidoc | 42 ----- .../open-telemetry/otel-direct.asciidoc | 166 ------------------ .../open-telemetry/otel-limitations.asciidoc | 52 ------ .../open-telemetry/otel-metrics.asciidoc | 51 ------ .../data-model/distributed-tracing.asciidoc | 6 - .../data-model/transactions/sampling.asciidoc | 29 --- .../en/observability/apm/shared/otel.asciidoc | 4 + .../install-agents-widget.asciidoc | 2 +- .../handle-no-results-found-message.asciidoc | 4 - docs/en/observability/index.asciidoc | 4 - .../observability-get-started.asciidoc | 5 +- .../monitor-hosts-with-otel.asciidoc | 70 -------- .../quickstarts/monitor-k8s-otel.asciidoc | 66 ------- docs/en/observability/redirects.asciidoc | 38 +++- 18 files changed, 63 insertions(+), 618 deletions(-) delete mode 100644 docs/en/observability/apm/collect-application-data/open-telemetry/otel-attrs.asciidoc delete mode 100644 docs/en/observability/apm/collect-application-data/open-telemetry/otel-direct.asciidoc delete mode 100644 docs/en/observability/apm/collect-application-data/open-telemetry/otel-limitations.asciidoc delete mode 100644 docs/en/observability/apm/collect-application-data/open-telemetry/otel-metrics.asciidoc create mode 100644 docs/en/observability/apm/shared/otel.asciidoc delete mode 100644 docs/en/observability/quickstarts/monitor-hosts-with-otel.asciidoc delete mode 100644 docs/en/observability/quickstarts/monitor-k8s-otel.asciidoc diff --git a/docs/en/apm-server/redirects.asciidoc b/docs/en/apm-server/redirects.asciidoc index c9bec3c8cc..9948ee17f9 100644 --- a/docs/en/apm-server/redirects.asciidoc +++ b/docs/en/apm-server/redirects.asciidoc @@ -753,9 +753,7 @@ Refer to {observability-guide}/apm-open-telemetry-with-elastic.html[OpenTelemetr [role="exclude",id="open-telemetry-direct"] === OpenTelemetry native support -{move-notice} - -Refer to {observability-guide}/apm-open-telemetry-direct.html[OpenTelemetry native support]. +For information on using OpenTelemetry with Elastic, refer to https://elastic.github.io/opentelemetry/[Elastic Distributions of OpenTelemetry (EDOT)]. [role="exclude",id="open-telemetry-other-env"] === AWS Lambda Support @@ -781,9 +779,7 @@ Refer to {observability-guide}/apm-open-telemetry-known-limitations.html[Limitat [role="exclude",id="open-telemetry-resource-attributes"] === Resource attributes -{move-notice} - -Refer to {observability-guide}/apm-open-telemetry-resource-attributes.html[Resource attributes]. +For information on using OpenTelemetry with Elastic, refer to https://elastic.github.io/opentelemetry/[Elastic Distributions of OpenTelemetry (EDOT)]. [role="exclude",id="manage-storage"] === Manage storage diff --git a/docs/en/observability/apm/api/apm-server/api-otlp.asciidoc b/docs/en/observability/apm/api/apm-server/api-otlp.asciidoc index 4215d9ac59..c2837b9243 100644 --- a/docs/en/observability/apm/api/apm-server/api-otlp.asciidoc +++ b/docs/en/observability/apm/api/apm-server/api-otlp.asciidoc @@ -32,6 +32,4 @@ APM Server supports two OTLP communication protocols on the same port: |OTLP logs intake |`/v1/logs` |==== -TIP: See our OpenTelemetry documentation to learn how to send data to the APM Server from an -<> or -<>. +TIP: See our https://elastic.github.io/opentelemetry/[OpenTelemetry documentation] to learn how to send data to the APM Server. diff --git a/docs/en/observability/apm/collect-application-data/index.asciidoc b/docs/en/observability/apm/collect-application-data/index.asciidoc index 1d8f3b19d1..14accc02ef 100644 --- a/docs/en/observability/apm/collect-application-data/index.asciidoc +++ b/docs/en/observability/apm/collect-application-data/index.asciidoc @@ -7,8 +7,7 @@ Use Elastic APM agents or an OpenTelemetry language SDK to instrument a service in the language its written in: * <>: Elastic APM agents are instrumentation libraries written in the same language as your service. -* <>: OpenTelemetry is an open source set of APIs, SDKs, tooling, and integrations that enable the capture and management of telemetry data from your services and applications. -** This option includes Elastic Distributions of OpenTelemetry, which are customized versions of https://opentelemetry.io/docs/languages/[OpenTelemetry language SDKs] that are optimized to work with an Elastic backend. +* <>: OpenTelemetry is an open source set of APIs, SDKs, tooling, and integrations that enable the capture and management of telemetry data from your services and applications. Elastic offers https://elastic.github.io/opentelemetry/edot-sdks/index.html[Elastic Distributions of OpenTelemetry (EDOT)], which are customized versions of https://opentelemetry.io/docs/languages/[OpenTelemetry language SDKs] that are optimized to work with an Elastic backend. *Not sure which method is right for you?* Compare the available options below. @@ -21,12 +20,11 @@ Is this table even helpful? Is it missing anything that would make it more helpful? //// |=== -| | Elastic APM agent | Elastic Distribution of OpenTelemetry +| | Elastic APM agent | Elastic Distributions of OpenTelemetry (EDOT) | *Support level* | Fully supported -| Mixed support + -_Refer to the_ <> +| Fully supported for available languages | *Data protocol* | Elastic protocol @@ -52,15 +50,15 @@ Are we ok with the gaps it exposes? [cols="<,^,^"] |=== | *Language* | *Elastic APM agent* | *Elastic Distributions of OpenTelemetry (EDOT)* -| *Android* | Android agent | {not-available} -| *Go* | Go agent | {not-available} -| *iOS* | iOS agent | {not-available} -| *Java* | Java agent | EDOT Java -| *.NET* | .NET agent | preview:[] EDOT .NET -| *Node.js* | Node.js agent | preview:[] EDOT Node.js -| *PHP* | PHP agent | preview:[] EDOT PHP -| *Python* | Python agent | preview:[] EDOT Python -| *Ruby* | Ruby agent | {not-available} +| *Android* | {not-available} | Elastic OTel Android Agent +| *Go* | Go agent | {not-available} +| *iOS* | {not-available} | Elastic APM iOS Agent +| *Java* | Java agent | EDOT Java +| *.NET* | .NET agent | EDOT .NET +| *Node.js* | Node.js agent | EDOT Node.js +| *PHP* | PHP agent | EDOT PHP +| *Python* | Python agent | EDOT Python +| *Ruby* | Ruby agent | {not-available} |=== [discrete] diff --git a/docs/en/observability/apm/collect-application-data/open-telemetry/index.asciidoc b/docs/en/observability/apm/collect-application-data/open-telemetry/index.asciidoc index b021bb9ae8..408176ce96 100644 --- a/docs/en/observability/apm/collect-application-data/open-telemetry/index.asciidoc +++ b/docs/en/observability/apm/collect-application-data/open-telemetry/index.asciidoc @@ -13,21 +13,15 @@ https://opentelemetry.io/docs/concepts/what-is-opentelemetry/[OpenTelemetry] is a set of APIs, SDKs, tooling, and integrations that enable the capture and management of telemetry data from your services and applications. -Elastic integrates with OpenTelemetry, allowing you to reuse your existing instrumentation -to easily send observability data to the {stack}. -There are several ways to integrate OpenTelemetry with the {stack}: +Elastic integrates with OpenTelemetry, allowing you to reuse your existing instrumentation to easily send observability data to the {stack}. You can integrate OpenTelemetry with the {stack} the following ways: * <> -* <> -* <> * <> [float] [[apm-otel-elastic-distros]] == Elastic Distributions of OpenTelemetry language SDKs -preview::["Some Elastic Distributions of OpenTelemetry are not yet recommended for production use. Functionality may be changed or removed in future releases. Alpha releases are not subject to the support SLA of official GA features."] - Elastic offers several distributions of OpenTelemetry language SDKs. A _distribution_ is a customized version of an upstream OpenTelemetry repository. Each Elastic Distribution of OpenTelemetry is a customized version of an https://opentelemetry.io/docs/languages/[OpenTelemetry language SDK]. @@ -47,11 +41,11 @@ such as which sources are collected by default. // Where to go next Get started with an Elastic Distribution of OpenTelemetry language SDK: -* https://github.com/elastic/elastic-otel-java[*Elastic Distribution of OpenTelemetry Java →*] -* preview:["The Elastic Distribution of OpenTelemetry .NET is not yet recommended for production use. Functionality may be changed or removed in future releases. Alpha releases are not subject to the support SLA of official GA features."] https://github.com/elastic/elastic-otel-dotnet[*Elastic Distribution of OpenTelemetry .NET →*] -* preview:["The Elastic Distribution of OpenTelemetry Node.js is not yet recommended for production use. Functionality may be changed or removed in future releases. Alpha releases are not subject to the support SLA of official GA features."] https://github.com/elastic/elastic-otel-node[*Elastic Distribution of OpenTelemetry Node.js →*] -* preview:["The Elastic Distribution of OpenTelemetry Python is not yet recommended for production use. Functionality may be changed or removed in future releases. Alpha releases are not subject to the support SLA of official GA features."] https://github.com/elastic/elastic-otel-python[*Elastic Distribution of OpenTelemetry Python →*] -* preview:["The Elastic Distribution of OpenTelemetry PHP is not yet recommended for production use. Functionality may be changed or removed in future releases. Alpha releases are not subject to the support SLA of official GA features."] https://github.com/elastic/elastic-otel-php[*Elastic Distribution of OpenTelemetry PHP →*] +* https://elastic.github.io/opentelemetry/edot-sdks/java/index.html[**Elastic Distribution of OpenTelemetry Java →**] +* https://elastic.github.io/opentelemetry/edot-sdks/dotnet/index.html[**Elastic Distribution of OpenTelemetry .NET →**] +* https://elastic.github.io/opentelemetry/edot-sdks/nodejs/index.html[**Elastic Distribution of OpenTelemetry Node.js →**] +* https://elastic.github.io/opentelemetry/edot-sdks/python/index.html[**Elastic Distribution of OpenTelemetry Python →**] +* https://elastic.github.io/opentelemetry/edot-sdks/php/index.html[**Elastic Distribution of OpenTelemetry PHP →**] [NOTE] ==== @@ -59,72 +53,6 @@ For more details about OpenTelemetry distributions in general, visit the https://opentelemetry.io/docs/concepts/distributions[OpenTelemetry documentation]. ==== -[float] -[[apm-otel-api-sdk-elastic-agent]] -== Upstream OpenTelemetry API/SDK + Elastic APM agent - -Use the OpenTelemetry API/SDKs with <<_step_3_install_apm_agents,Elastic APM agents>> to translate OpenTelemetry API calls to Elastic APM API calls. - -image::images/apm-otel-api-sdk-elastic-agent.png[] - -// Why you _would_ choose this method -This allows you to reuse your existing OpenTelemetry instrumentation to create Elastic APM transactions and spans--avoiding -vendor lock-in and having to redo manual instrumentation. - -// Why you would _not_ choose this method -However, not all features of the OpenTelemetry API are supported when using this approach, and -not all Elastic APM agents support this approach. - -// Where to go next -Find more details about how to use an OpenTelemetry API or SDK with an Elastic APM agent and -which OpenTelemetry API features are supported in the APM agent documentation: - -* {apm-java-ref}/opentelemetry-bridge.html[*APM Java agent →*] -* {apm-dotnet-ref}/opentelemetry-bridge.html[*APM .NET agent →*] -* {apm-node-ref}/opentelemetry-bridge.html[*APM Node.js agent →*] -* {apm-py-ref}/opentelemetry-bridge.html[*APM Python agent →*] - -[float] -[[apm-otel-upstream]] -== Upstream OpenTelemetry Collector and language SDKs - -The {stack} natively supports the OpenTelemetry protocol (OTLP). -This means trace data and metrics collected from your applications and infrastructure by an -OpenTelemetry Collector or OpenTelemetry language SDK can be sent to the {stack}. - -You can set up an https://opentelemetry.io/docs/collector/[OpenTelemetry Collector], instrument your -application with an https://opentelemetry.io/docs/languages/[OpenTelemetry language SDK] that sends -data to the collector, and use the collector to process and export the data to APM Server. - -image::images/apm-otel-api-sdk-collector.png[] - -[NOTE] -==== -It's also possible to send data directly to APM Server from an upstream OpenTelemetry SDK. -You might do this during development or if you're monitoring a small-scale application. -Read more about when to use a collector in the https://opentelemetry.io/docs/collector/#when-to-use-a-collector[OpenTelemetry documentation]. -==== - -// Why you _would_ choose this approach -This approach works well when you need to instrument a technology that Elastic doesn't -provide a solution for. For example, if you want to instrument C or C++ you could use the -https://github.com/open-telemetry/opentelemetry-cpp[OpenTelemetry C{plus}{plus} client]. -// Other languages include erlang, lua, perl. - -// Why you would _not_ choose this approach -However, there are some limitations when using collectors and language SDKs built and maintained -by OpenTelemetry, including: - -* Elastic can't provide implementation support on how to use upstream OpenTelemetry tools. -* You won't have access to Elastic enterprise APM features. -* You may experience problems with performance efficiency. - -For more on the limitations associated with using upstream OpenTelemetry tools, -refer to <>. - -// Where to go next -<> - [float] [[apm-otel-lambda]] == AWS Lambda collector exporter @@ -138,23 +66,3 @@ AWS Lambda functions can be instrumented with OpenTelemetry and monitored with E To get started, follow the official AWS Distro for OpenTelemetry Lambda documentation, and configure the OpenTelemetry Collector to output traces and metrics to your Elastic cluster: https://aws-otel.github.io/docs/getting-started/lambda[*Get started with the AWS Distro for OpenTelemetry Lambda*^] image:images/icons/popout.svg[] - -//// -Subsections -//// - -include::./otel-direct.asciidoc[leveloffset=+1] -include::./otel-metrics.asciidoc[leveloffset=+1] -include::./otel-limitations.asciidoc[leveloffset=+1] -include::./otel-attrs.asciidoc[leveloffset=+1] - -// **** -// The text below is used in the Quick start guide -// tag::otel-get-started[] -Elastic integrates with OpenTelemetry, allowing you to reuse your existing instrumentation -to easily send observability data to the {stack}. - -For more information on how to combine Elastic and OpenTelemetry, -see {observability-guide}/apm-open-telemetry.html[OpenTelemetry integration]. -// end::otel-get-started[] -// **** \ No newline at end of file diff --git a/docs/en/observability/apm/collect-application-data/open-telemetry/otel-attrs.asciidoc b/docs/en/observability/apm/collect-application-data/open-telemetry/otel-attrs.asciidoc deleted file mode 100644 index a54ebb0a3e..0000000000 --- a/docs/en/observability/apm/collect-application-data/open-telemetry/otel-attrs.asciidoc +++ /dev/null @@ -1,42 +0,0 @@ -[[apm-open-telemetry-resource-attributes]] -= Resource attributes - -A resource attribute is a key/value pair containing information about the entity producing telemetry. -Resource attributes are mapped to Elastic Common Schema (ECS) fields like `service.*`, `cloud.*`, `process.*`, etc. -These fields describe the service and the environment that the service runs in. - -The examples shown here set the Elastic (ECS) `service.environment` field for the resource, i.e. service, that is producing trace events. -Note that Elastic maps the OpenTelemetry `deployment.environment` field to -the ECS `service.environment` field on ingestion. - -**OpenTelemetry agent** - -Use the `OTEL_RESOURCE_ATTRIBUTES` environment variable to pass resource attributes at process invocation. - -[source,bash] ----- -export OTEL_RESOURCE_ATTRIBUTES=deployment.environment=production ----- - -**OpenTelemetry collector** - -Use the https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/resourceprocessor[resource processor] to set or apply changes to resource attributes. - -[source,yaml] ----- -... -processors: - resource: - attributes: - - key: deployment.environment - action: insert - value: production -... ----- - -[TIP] --- -Need to add event attributes instead? -Use attributes--not to be confused with resource attributes--to add data to span, log, or metric events. -Attributes can be added as a part of the OpenTelemetry instrumentation process or with the https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/attributesprocessor[attributes processor]. --- \ No newline at end of file diff --git a/docs/en/observability/apm/collect-application-data/open-telemetry/otel-direct.asciidoc b/docs/en/observability/apm/collect-application-data/open-telemetry/otel-direct.asciidoc deleted file mode 100644 index 77b8ad3b72..0000000000 --- a/docs/en/observability/apm/collect-application-data/open-telemetry/otel-direct.asciidoc +++ /dev/null @@ -1,166 +0,0 @@ -[[apm-open-telemetry-direct]] -= Upstream OpenTelemetry Collectors and language SDKs - -[NOTE] -==== -This is one of <> you can use to integrate Elastic with OpenTelemetry. - -*To compare approaches and choose the best approach for your use case, refer to <>.* -==== - -The {stack} natively supports the OpenTelemetry protocol (OTLP). -This means trace data and metrics collected from your applications and infrastructure can -be sent directly to the {stack}. - -* Send data to the {stack} from an upstream <> -* Send data to the {stack} from an upstream <> - -[discrete] -[[apm-connect-open-telemetry-collector]] -== Send data from an upstream OpenTelemetry Collector - -Connect your OpenTelemetry Collector instances to Elastic {observability} using the OTLP exporter: - -[source,yaml] ----- -receivers: <1> - # ... - otlp: - protocols: - grpc: - endpoint: 0.0.0.0:4317 - http: - endpoint: 0.0.0.0:4318 -processors: <2> - # ... - memory_limiter: - check_interval: 1s - limit_mib: 2000 - batch: - -exporters: - debug: - verbosity: detailed <3> - otlp: <4> - # Elastic APM server https endpoint without the "https://" prefix - endpoint: "${env:ELASTIC_APM_SERVER_ENDPOINT}" <5> <7> - headers: - # Elastic APM Server secret token - Authorization: "Bearer ${env:ELASTIC_APM_SECRET_TOKEN}" <6> <7> - -service: - pipelines: - traces: - receivers: [otlp] - processors: [..., memory_limiter, batch] - exporters: [debug, otlp] - metrics: - receivers: [otlp] - processors: [..., memory_limiter, batch] - exporters: [debug, otlp] - logs: <8> - receivers: [otlp] - processors: [..., memory_limiter, batch] - exporters: [debug, otlp] ----- -<1> The receivers, like the -https://github.com/open-telemetry/opentelemetry-collector/tree/main/receiver/otlpreceiver[OTLP receiver], that forward data emitted by APM agents, or the https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/hostmetricsreceiver[host metrics receiver]. -<2> We recommend using the https://github.com/open-telemetry/opentelemetry-collector/blob/main/processor/batchprocessor/README.md[Batch processor] and the https://github.com/open-telemetry/opentelemetry-collector/blob/main/processor/memorylimiterprocessor/README.md[memory limiter processor]. For more information, see https://github.com/open-telemetry/opentelemetry-collector/blob/main/processor/README.md#recommended-processors[recommended processors]. -<3> The https://github.com/open-telemetry/opentelemetry-collector/tree/main/exporter/debugexporter[debug exporter] is helpful for troubleshooting, and supports configurable verbosity levels: `basic` (default), `normal`, and `detailed`. -<4> Elastic {observability} endpoint configuration. -APM Server supports a ProtoBuf payload via both the OTLP protocol over gRPC transport https://opentelemetry.io/docs/specs/otlp/#otlpgrpc[(OTLP/gRPC)] -and the OTLP protocol over HTTP transport https://opentelemetry.io/docs/specs/otlp/#otlphttp[(OTLP/HTTP)]. -To learn more about these exporters, see the OpenTelemetry Collector documentation: -https://github.com/open-telemetry/opentelemetry-collector/tree/main/exporter/otlphttpexporter[OTLP/HTTP Exporter] or -https://github.com/open-telemetry/opentelemetry-collector/tree/main/exporter/otlpexporter[OTLP/gRPC exporter]. -When adding an endpoint to an existing configuration an optional name component can be added, like `otlp/elastic`, to distinguish endpoints as described in the https://opentelemetry.io/docs/collector/configuration/#basics[OpenTelemetry Collector Configuration Basics]. -<5> Hostname and port of the APM Server endpoint. For example, `elastic-apm-server:8200`. -<6> Credential for Elastic APM <> (`Authorization: "Bearer a_secret_token"`) or <> (`Authorization: "ApiKey an_api_key"`). -<7> Environment-specific configuration parameters can be conveniently passed in as environment variables documented https://opentelemetry.io/docs/collector/configuration/#environment-variables[here] (e.g. `ELASTIC_APM_SERVER_ENDPOINT` and `ELASTIC_APM_SECRET_TOKEN`). -<8> preview:[] To send OpenTelemetry logs to {stack} version 8.0+, declare a `logs` pipeline. - -You're now ready to export traces and metrics from your services and applications. - -TIP: When using the OpenTelemetry Collector, you should always prefer sending data via the https://github.com/open-telemetry/opentelemetry-collector/tree/main/exporter/otlphttpexporter[`OTLP` exporter] to an Elastic APM Server. -Other methods, like using the https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/elasticsearchexporter[`elasticsearch` exporter] to send data directly to {es} will send data to the {stack}, -but will bypass all of the validation and data processing that the APM Server performs. -In addition, your data will not be viewable in the {kib} {observability} apps if you use the `elasticsearch` exporter. - -[discrete] -[[apm-instrument-apps-otel]] -== Send data from an upstream OpenTelemetry SDK - -[NOTE] -==== -This document outlines how to send data directly from an upstream OpenTelemetry SDK to APM Server, which is appropriate when getting started. However, in many cases you should use the OpenTelemetry SDK to send data to an OpenTelemetry Collector that processes and exports data to APM Server. Read more about when and how to use a collector in the https://opentelemetry.io/docs/collector/#when-to-use-a-collector[OpenTelemetry documentation]. -==== - -To export traces and metrics to APM Server, instrument your services and applications -with the OpenTelemetry API, SDK, or both. For example, if you are a Java developer, you need to instrument your Java app with the -https://github.com/open-telemetry/opentelemetry-java-instrumentation[OpenTelemetry agent for Java]. -See the https://opentelemetry.io/docs/instrumentation/[OpenTelemetry Instrumentation guides] to download the -OpenTelemetry agent or SDK for your language. - -Define environment variables to configure the OpenTelemetry agent or SDK and enable communication with Elastic APM. -For example, if you are instrumenting a Java app, define the following environment variables: - -[source,bash] ----- -export OTEL_RESOURCE_ATTRIBUTES=service.name=checkoutService,service.version=1.1,deployment.environment=production -export OTEL_EXPORTER_OTLP_ENDPOINT=https://apm_server_url:8200 -export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer an_apm_secret_token" -export OTEL_METRICS_EXPORTER="otlp" \ -export OTEL_LOGS_EXPORTER="otlp" \ <1> -java -javaagent:/path/to/opentelemetry-javaagent-all.jar \ - -classpath lib/*:classes/ \ - com.mycompany.checkout.CheckoutServiceServer ----- -<1> preview:[] The OpenTelemetry logs intake via APM Server is currently in technical preview. - -|=== - -| `OTEL_RESOURCE_ATTRIBUTES` | Fields that describe the service and the environment that the service runs in. See -<> for more information. - -| `OTEL_EXPORTER_OTLP_ENDPOINT` | APM Server URL. The host and port that APM Server listens for events on. - -| `OTEL_EXPORTER_OTLP_HEADERS` a| Authorization header that includes the Elastic APM Secret token or API key: `"Authorization=Bearer an_apm_secret_token"` or `"Authorization=ApiKey an_api_key"`. - -For information on how to format an API key, see -{observability-guide}/apm-api-key.html[API keys]. - -Please note the required space between `Bearer` and `an_apm_secret_token`, and `ApiKey` and `an_api_key`. - -NOTE: If you are using a version of the Python OpenTelemetry agent _before_ 1.27.0, the content of the header _must_ be URL-encoded. You can use the Python standard library's `urllib.parse.quote` function to encode the content of the header. - -| `OTEL_METRICS_EXPORTER` | Metrics exporter to use. See https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/#exporter-selection[exporter selection] for more information. - -| `OTEL_LOGS_EXPORTER` | Logs exporter to use. See https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/#exporter-selection[exporter selection] for more information. - -|=== - -You are now ready to collect traces and <> before <> -and <> in {kib}. - -[discrete] -[[apm-open-telemetry-proxy-apm]] -== Proxy requests to APM Server - -APM Server supports both the https://opentelemetry.io/docs/specs/otlp/#otlpgrpc[OTLP/gRPC] and https://opentelemetry.io/docs/specs/otlp/#otlphttp[OTLP/HTTP] protocol on the same port as Elastic APM agent requests. For ease of setup, we recommend using OTLP/HTTP when proxying or load balancing requests to the APM Server. - -If you use the OTLP/gRPC protocol, requests to the APM Server must use either HTTP/2 over TLS or HTTP/2 Cleartext (H2C). No matter which protocol is used, OTLP/gRPC requests will have the header: `"Content-Type: application/grpc"`. - -When using a layer 7 (L7) proxy like AWS ALB, requests must be proxied in a way that ensures requests to the APM Server follow the rules outlined above. For example, with ALB you can create rules to select an alternative backend protocol based on the headers of requests coming into ALB. In this example, you'd select the gRPC protocol when the `"Content-Type: application/grpc"` header exists on a request. - -For more information on how to configure an AWS ALB to support gRPC, see this AWS blog post: -https://aws.amazon.com/blogs/aws/new-application-load-balancer-support-for-end-to-end-http-2-and-grpc/[Application Load Balancer Support for End-to-End HTTP/2 and gRPC]. - -For more information on how APM Server services gRPC requests, see -https://github.com/elastic/apm-server/blob/main/dev_docs/otel.md#muxing-grpc-and-http11[Muxing gRPC and HTTP/1.1]. - -[discrete] -[[apm-open-telemetry-direct-next]] -== Next steps - -* <> -* Learn about the <> diff --git a/docs/en/observability/apm/collect-application-data/open-telemetry/otel-limitations.asciidoc b/docs/en/observability/apm/collect-application-data/open-telemetry/otel-limitations.asciidoc deleted file mode 100644 index 30a45d649d..0000000000 --- a/docs/en/observability/apm/collect-application-data/open-telemetry/otel-limitations.asciidoc +++ /dev/null @@ -1,52 +0,0 @@ -[[apm-open-telemetry-known-limitations]] -= Limitations - -[float] -[[apm-open-telemetry-traces-limitations]] -== OpenTelemetry traces - -* Traces of applications using `messaging` semantics might be wrongly displayed as `transactions` in the Applications UI, while they should be considered `spans` (see issue https://github.com/elastic/apm-server/issues/7001[#7001]). -* Inability to see Stack traces in spans. -* Inability in APM views to view the "Time Spent by Span Type" (see issue https://github.com/elastic/apm-server/issues/5747[#5747]). - -[float] -[[apm-open-telemetry-logs-intake]] -== OpenTelemetry logs - -* preview:[] The OpenTelemetry logs intake via APM Server is in technical preview. -* The application logs data stream (`app_logs`) has dynamic mapping disabled. This means the automatic detection and mapping of new fields is disabled (see issue https://github.com/elastic/apm-server/issues/9093[#9093]). - -[float] -[[apm-open-telemetry-otlp-limitations]] -== OpenTelemetry Line Protocol (OTLP) - -APM Server supports both the https://opentelemetry.io/docs/specs/otlp/#otlpgrpc[OTLP/gRPC] and https://opentelemetry.io/docs/specs/otlp/#otlphttp[OTLP/HTTP] protocol with ProtoBuf payload. -APM Server does not yet support JSON Encoding for OTLP/HTTP. - -[float] -[[apm-open-telemetry-collector-exporter]] -== OpenTelemetry Collector exporter for Elastic - -The https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.57.2/exporter/elasticexporter[OpenTelemetry Collector exporter for Elastic] -has been deprecated and replaced by the native support of the OpenTelemetry Line Protocol in Elastic Observability (OTLP). -// To learn more, see https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.57.2/exporter/elasticsearchexporter#migration[migration]. - -The https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/elasticsearchexporter#elasticsearch-exporter[Elasticsearch exporter for the OpenTelemetry Collector] -(which is different from the legacy exporter mentioned above) is not intended to be used with Elastic APM and Elastic Observability. Use <> instead. - -[float] -[[apm-open-telemetry-tbs]] -== OpenTelemetry's tail-based sampling - -Tail-based sampling allows to make sampling decisions after all spans of a trace have been completed. -This allows for more powerful and informed sampling rules. - -When using OpenTelemetry with Elastic APM, there are two different implementations available for tail-based sampling: - -* Tail-based sampling using the https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/tailsamplingprocessor[tailsamplingprocessor] in the OpenTelemetry Collector -* Native <> - -Using the https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/tailsamplingprocessor[tailsamplingprocessor] in the OpenTelemetry Collector comes with an important limitation. Elastic's APM backend calculates span and transaction metrics based on the incoming span events. -These metrics are accurate for 100% sampling scenarios. In scenarios with probabilistic sampling, Elastic's APM backend is being informed about the sampling rate of spans and can extrapolate throughput metrics based on the incoming, partial data. However, with tail-based sampling there's no clear probability for sampling decisions as the rules can be more complex and the OpenTelemetry Collector does not provide sampling probability information to the Elastic backend that could be used for extrapolation of data. Therefore, there's no way for Elastic APM to properly extrapolate throughput and count metrics that are derived from span events that have been tail-based sampled in the OpenTelemetry Collector. In these scenarios, derived throughput and count metrics are likely to be inaccurate. - -Therefore, we recommend using Elastic's native tail-based sampling when integrating with OpenTelemetry. diff --git a/docs/en/observability/apm/collect-application-data/open-telemetry/otel-metrics.asciidoc b/docs/en/observability/apm/collect-application-data/open-telemetry/otel-metrics.asciidoc deleted file mode 100644 index b108f731ef..0000000000 --- a/docs/en/observability/apm/collect-application-data/open-telemetry/otel-metrics.asciidoc +++ /dev/null @@ -1,51 +0,0 @@ -[[apm-open-telemetry-collect-metrics]] -= Collect metrics - -IMPORTANT: When collecting metrics, please note that the https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-api/latest/io/opentelemetry/api/metrics/DoubleValueRecorder.html[`DoubleValueRecorder`] -and https://www.javadoc.io/doc/io.opentelemetry/opentelemetry-api/latest/io/opentelemetry/api/metrics/LongValueObserver.html[`LongValueRecorder`] metrics are not yet supported. - -Here's an example of how to capture business metrics from a Java application. - -[source,java] ----- -// initialize metric -Meter meter = GlobalMetricsProvider.getMeter("my-frontend"); -DoubleCounter orderValueCounter = meter.doubleCounterBuilder("order_value").build(); - -public void createOrder(HttpServletRequest request) { - - // create order in the database - ... - // increment business metrics for monitoring - orderValueCounter.add(orderPrice); -} ----- - -See the https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/metrics/api.md[Open Telemetry Metrics API] -for more information. - -[float] -[[apm-open-telemetry-verify-metrics]] -== Verify OpenTelemetry metrics data - -Use *Discover* to validate that metrics are successfully reported to {kib}. - -. Launch {kib}: -+ --- -include::{observability-docs-root}/docs/en/observability/apm/tab-widgets/open-kibana-widget.asciidoc[] --- - -. Find **Discover** in the main menu or use the {kibana-ref}/introduction.html#kibana-navigation-search[global search field]. -. Select `apm-*` as your index pattern. -. Filter the data to only show documents with metrics: `[data_stream][type]: "metrics"` -. Narrow your search with a known OpenTelemetry field. For example, if you have an `order_value` field, add `order_value: *` to your search to return -only OpenTelemetry metrics documents. - -[float] -[[apm-open-telemetry-visualize]] -== Visualize in {kib} - -Use *Lens* to create visualizations for OpenTelemetry metrics. Lens enables you to build visualizations by dragging and dropping data fields. It makes smart visualization suggestions for your data, allowing you to switch between visualization types. - -For more information on using Lens, refer to the {kibana-ref}/lens.html[Lens documentation]. diff --git a/docs/en/observability/apm/data-model/distributed-tracing.asciidoc b/docs/en/observability/apm/data-model/distributed-tracing.asciidoc index d9e6ecc628..596b1d978f 100644 --- a/docs/en/observability/apm/data-model/distributed-tracing.asciidoc +++ b/docs/en/observability/apm/data-model/distributed-tracing.asciidoc @@ -54,12 +54,6 @@ Both support the `traceparent` header, and trace data is successfully propagated // lint ignore traceparent image::./images/dt-trace-ex1.png[How traceparent propagation works] -In this example, Elastic's Ruby agent communicates with OpenTelemetry's Java agent. -Both support the `traceparent` header, and trace data is successfully propagated. - -// lint ignore traceparent -image::./images/dt-trace-ex2.png[How traceparent propagation works] - In this example, the trace meets a piece of middleware that doesn't propagate the `traceparent` header. The distributed trace ends and any further communication will result in a new trace. diff --git a/docs/en/observability/apm/data-model/transactions/sampling.asciidoc b/docs/en/observability/apm/data-model/transactions/sampling.asciidoc index bbb53de361..cc4f06d756 100644 --- a/docs/en/observability/apm/data-model/transactions/sampling.asciidoc +++ b/docs/en/observability/apm/data-model/transactions/sampling.asciidoc @@ -90,27 +90,6 @@ traces will be sampled as new traces in `Service C`. The end result will be five .Using the `restart` trace continuation strategy image::./images/dt-sampling-continuation-strategy-restart.png[Distributed tracing and head based sampling with restart continuation strategy] -[float] -=== OpenTelemetry - -Head-based sampling is implemented directly in the APM agents and SDKs. -The sample rate must be propagated between services and the managed intake service in order to produce accurate metrics. - -OpenTelemetry offers multiple samplers. However, most samplers do not propagate the sample rate. -This results in inaccurate span-based metrics, like APM throughput, latency, and error metrics. - -For accurate span-based metrics when using head-based sampling with OpenTelemetry, you must use -a https://opentelemetry.io/docs/specs/otel/trace/tracestate-probability-sampling/[consistent probability sampler]. -These samplers propagate the sample rate between services and the managed intake service, resulting in accurate metrics. - -[NOTE] -==== -OpenTelemetry does not offer consistent probability samplers in all languages. -OpenTelemetry users should consider using tail-based sampling instead. - -Refer to the documentation of your favorite OpenTelemetry agent or SDK for more information on the availability of consistent probability samplers. -==== - [float] [[apm-tail-based-sampling]] == Tail-based sampling @@ -150,14 +129,6 @@ the sampled traces would look something like this: image::./images/dt-sampling-example-3.png[Distributed tracing and tail based sampling example one] -[float] -=== OpenTelemetry with tail-based sampling - -Tail-based sampling is implemented entirely in APM Server, -and will work with traces sent by either Elastic APM agents or OpenTelemetry SDKs. - -Due to <> when using https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/tailsamplingprocessor[tailsamplingprocessor], we recommend using APM Server tail-based sampling instead. - [float] == Sampled data and visualizations diff --git a/docs/en/observability/apm/shared/otel.asciidoc b/docs/en/observability/apm/shared/otel.asciidoc new file mode 100644 index 0000000000..ddc3b0b195 --- /dev/null +++ b/docs/en/observability/apm/shared/otel.asciidoc @@ -0,0 +1,4 @@ +// The text below is used in the Quick start guide +Elastic integrates with OpenTelemetry using the Elastic Distribution of OpenTelemetry (EDOT), allowing you to reuse your existing instrumentation to easily send observability data to the {stack}. + +For more information on how to combine Elastic and OpenTelemetry, see the https://elastic.github.io/opentelemetry/[EDOT documentation]. diff --git a/docs/en/observability/apm/tab-widgets/install-agents-widget.asciidoc b/docs/en/observability/apm/tab-widgets/install-agents-widget.asciidoc index 4979d12366..f54fcb91c7 100644 --- a/docs/en/observability/apm/tab-widgets/install-agents-widget.asciidoc +++ b/docs/en/observability/apm/tab-widgets/install-agents-widget.asciidoc @@ -196,7 +196,7 @@ include::install-agents.asciidoc[tag=rum] hidden=""> ++++ -include::../collect-application-data/open-telemetry/index.asciidoc[tag=otel-get-started] +include::../shared/otel.asciidoc[] ++++ diff --git a/docs/en/observability/handle-no-results-found-message.asciidoc b/docs/en/observability/handle-no-results-found-message.asciidoc index 09ccd45fdd..c31ebc56bf 100644 --- a/docs/en/observability/handle-no-results-found-message.asciidoc +++ b/docs/en/observability/handle-no-results-found-message.asciidoc @@ -22,10 +22,6 @@ To fix the problem, install the integration and configure it to send the missing + TIP: Follow one of our quickstarts under **Observability** → **Add data** to make sure the correct integrations are installed and all required metrics are collected. -* You are not using the Elastic Distribution of the OpenTelemetry Collector, which automatically maps data to the Elastic Common Schema (ECS) fields expected by the visualization. -+ -TIP: Follow our OpenTelemetry quickstart under **Observability** → **Add data** to make sure OpenTelemetry data is correctly mapped to ECS-compliant fields. - * You have explicitly chosen not to send these metrics. You may choose to limit the metrics sent to Elastic to save on space and improve cluster performance. For example, the System integration has options to choose which metrics you want to send. diff --git a/docs/en/observability/index.asciidoc b/docs/en/observability/index.asciidoc index b288d07d09..5d6c46e5c3 100644 --- a/docs/en/observability/index.asciidoc +++ b/docs/en/observability/index.asciidoc @@ -22,10 +22,6 @@ include::quickstarts/monitor-hosts-with-elastic-agent.asciidoc[leveloffset=+2] include::quickstarts/monitor-k8s-logs-metrics.asciidoc[leveloffset=+2] -include::quickstarts/monitor-hosts-with-otel.asciidoc[leveloffset=+2] - -include::quickstarts/monitor-k8s-otel.asciidoc[leveloffset=+2] - include::quickstarts/collect-data-with-aws-firehose.asciidoc[leveloffset=+2] include::splunk-get-started.asciidoc[leveloffset=+2] diff --git a/docs/en/observability/observability-get-started.asciidoc b/docs/en/observability/observability-get-started.asciidoc index 2d93a84a7a..7cd3203514 100644 --- a/docs/en/observability/observability-get-started.asciidoc +++ b/docs/en/observability/observability-get-started.asciidoc @@ -54,9 +54,10 @@ Follow the steps in these guides to get started quickly: * <> * <> -* <> -* <> * <> +* https://elastic.github.io/opentelemetry/quickstart/[Quickstart: Monitor hosts with OpenTelemetry] +* https://elastic.github.io/opentelemetry/use-cases/kubernetes/[Quickstart: Unified Kubernetes Observability with Elastic Distributions of OpenTelemetry (EDOT)] + [discrete] === Get started with other features diff --git a/docs/en/observability/quickstarts/monitor-hosts-with-otel.asciidoc b/docs/en/observability/quickstarts/monitor-hosts-with-otel.asciidoc deleted file mode 100644 index ffb4641935..0000000000 --- a/docs/en/observability/quickstarts/monitor-hosts-with-otel.asciidoc +++ /dev/null @@ -1,70 +0,0 @@ -[[quickstart-monitor-hosts-with-otel]] -= Quickstart: Monitor hosts with OpenTelemetry - -preview::[] - -In this quickstart guide, you'll learn how to monitor your hosts using the Elastic Distribution of OpenTelemetry (EDOT) Collector. -You'll also learn how to use {observability} features to gain deeper insight into your observability data after collecting it. - -[discrete] -== Prerequisites - -* An {es} cluster for storing and searching your data, and {kib} for visualizing and managing your data. This quickstart is available for all Elastic deployment models. The quickest way to get started with this quickstart is using a trial project on {serverless-docs}/quickstart-monitor-hosts-with-otel.html[Elastic serverless]. -* This quickstart is only available for Linux and MacOS systems. -* A user with the **Admin** role or higher—required to onboard system logs and metrics. To learn more, refer to {cloud}/ec-user-privileges.html[User roles and privileges]. -* Root privileges on the host—required to run the OpenTelemetry collector because of these components: -** `hostmetrics` receiver to read all system metrics (all processes, memory, etc.). -** `filelog` to allow the collector to read any user or application log files. - - -[discrete] -== Limitations -Refer to https://elastic.github.io/opentelemetry/compatibility/limitations.html[Elastic OpenTelemetry Collector limitations] for known limitations when using the EDOT Collector. - -[discrete] -== Collect your data - -Follow these steps to collect logs and metrics using the EDOT Collector: - -. In {kib}, go to the **Observability** UI and click **Add Data**. -. Under **What do you want to monitor?** select **Host**, and then select **OpenTelemetry: Logs & Metrics**. -+ -[role="screenshot"] -image::images/quickstart-monitor-hosts-otel-entry-point.png[Host monitoring entry point] -. Select the appropriate platform. -. Copy the command under step 1, open a terminal on your host, and run the command. -+ -This command downloads the {agent} package, extracts it in a EDOT directory. For example, `elastic-distro-8.16.0-linux-x86_64`. -It also adds a sample `otel.yml` configuration file to the directory and updates the storage directory, Elastic endpoint, and API key in the file. -+ -The default log path is `/var/log/*.log`. To update the path, modify the `otel.yml` in the EDOT directory. -+ -Find additional sample `otel.yml` configuration files in the EDOT directory in the `otel_samples` folder. -. Copy the command under Step 2 and run it in your terminal to start the EDOT Collector. - -NOTE: Logs are collected from setup onward, so you won't see logs that occurred before starting the EDOT Collector. - -Under **Visualize your data**, you'll see links to **Logs Explorer** to view your logs and **Hosts** to view your host metrics. - -[discrete] -== Gain deeper insight into your host data - -After using the Hosts page and Discover to confirm you've ingested all the host logs and metrics you want to monitor, -use Elastic {observability} to gain deeper insight into your host data with the following capabilities and features: - -* In the <>, analyze and compare data collected from your hosts. -You can also: -** <> for memory usage and network traffic on hosts. -** <> that notify you when an anomaly is detected or a metric exceeds a given value. -* In the <>, search and filter your log data, -get information about the structure of log fields, and display your findings in a visualization. -You can also: -** <> to find degraded documents. -** {kibana-ref}/xpack-ml-aiops.html#log-pattern-analysis[Run a pattern analysis] to find patterns in unstructured log messages. -** <> that notify you when an Observability data type reaches or exceeds a given value. -* Use {kibana-ref}/xpack-ml.html[machine learning] to apply predictive analytics to your data: -** {kibana-ref}/xpack-ml-anomalies.html[Detect anomalies] by comparing real-time and historical data from different sources to look for unusual, problematic patterns. -** {kibana-ref}/xpack-ml-aiops.html#log-rate-analysis[Analyze log spikes and drops]. -** {kibana-ref}/xpack-ml-aiops.html#change-point-detection[Detect change points] in your time series data. - -Refer to the <> for a description of other useful features. diff --git a/docs/en/observability/quickstarts/monitor-k8s-otel.asciidoc b/docs/en/observability/quickstarts/monitor-k8s-otel.asciidoc deleted file mode 100644 index 9d658ba3da..0000000000 --- a/docs/en/observability/quickstarts/monitor-k8s-otel.asciidoc +++ /dev/null @@ -1,66 +0,0 @@ -[[monitor-k8s-otel-edot]] -= Quickstart: Unified Kubernetes Observability with Elastic Distributions of OpenTelemetry (EDOT) - -preview::[] - -In this quickstart guide, you'll learn how to send Kubernetes logs, metrics, and application traces to Elasticsearch, using the https://github.com/open-telemetry/opentelemetry-operator/[OpenTelemetry Operator] to orchestrate https://elastic.github.io/opentelemetry/[Elastic Distributions of OpenTelemetry] (EDOT) Collectors and SDK instances. - -All the components will be deployed through the https://github.com/open-telemetry/opentelemetry-helm-charts/tree/main/charts/opentelemetry-kube-stack[opentelemetry-kube-stack] helm chart. They include: - -* https://github.com/open-telemetry/opentelemetry-operator/[OpenTelemetry Operator]. -* `DaemonSet` EDOT Collector configured for node level metrics. -* `Deployment` EDOT Collector configured for cluster level metrics. -* `Instrumentation` object for applications https://opentelemetry.io/docs/kubernetes/operator/automatic/[auto-instrumentation]. - -For a more detailed description of the components and advanced configuration, refer to the https://elastic.github.io/opentelemetry/[EDOT documentation]. - -[discrete] -== Prerequisites - -* An {es} cluster for storing and searching your data, and {kib} for visualizing and managing your data. This quickstart is available for all Elastic deployment models. To get started quickly, try out our hosted {ess} on {ess-trial}[{ecloud}]. -* A running Kubernetes cluster (v1.23 or newer). -* https://kubernetes.io/docs/reference/kubectl/[Kubectl]. -* https://helm.sh/docs/intro/install/[Helm]. -* (optional) https://cert-manager.io/docs/installation/[Cert-manager], if you opt for automatic generation and renewal of TLS certificates. - -[discrete] -== Collect your data - -. In {kib}, go to the **Observability** UI and click **Add Data**. - -. Under **What do you want to monitor?** select **Kubernetes**, and then select **OpenTelemetry: Full Observability**. -+ -[role="screenshot"] -image::images/quickstart-k8s-otel-entry-point.png[Kubernetes-OTel entry point] - -. Follow the on-screen instructions to install all needed components. -+ -[NOTE] -==== -The default installation deploys the OpenTelemetry Operator with a self-signed TLS certificate valid for 365 days. This certificate **won't be renewed** unless the Helm Chart release is manually updated. Refer to the https://elastic.github.io/opentelemetry/use-cases/kubernetes/customization.html#cert-manager-integrated-installation[cert-manager integrated installation] guide to enable automatic certificate generation and renewal using https://cert-manager.io/docs/installation/[cert-manager]. -==== -+ -Deploy the OpenTelemetry Operator and EDOT Collectors using the kube-stack Helm chart with the provided `values.yaml` file. You will run a few commands to: -+ - * Add the helm chart repository needed for the installation. - * Create a namespace. - * Create a secret with an API Key and the {es} endpoint to be used by the collectors. - * Install the `opentelemetry-kube-stack` helm chart with the provided `values.yaml`. - * Optionally, for instrumenting applications, apply the corresponding `annotations` as shown in {kib}. - -[discrete] -== Visualize your data - -After installation is complete and all relevant data is flowing into Elastic, -the **Visualize your data** section provides a link to the *[OTEL][Metrics Kubernetes]Cluster Overview* dashboard used to monitor the health of the cluster. - -[role="screenshot"] -image::images/quickstart-k8s-otel-dashboard.png[Kubernetes overview dashboard] - -[discrete] -== Troubleshooting and more - -* To troubleshoot deployment and installation, refer to https://elastic.github.io/opentelemetry/use-cases/kubernetes/deployment.html#installation-verification[installation verification]. -* For application instrumentation details, refer to https://elastic.github.io/opentelemetry/use-cases/kubernetes/instrumenting-applications.html[Instrumenting applications with EDOT SDKs on Kubernetes]. -* To customize the configuration, refer to https://elastic.github.io/opentelemetry/use-cases/kubernetes/customization.html[custom configuration]. -* Refer to <> for a description of other useful features. diff --git a/docs/en/observability/redirects.asciidoc b/docs/en/observability/redirects.asciidoc index 8ca1b4b334..d9066b15df 100644 --- a/docs/en/observability/redirects.asciidoc +++ b/docs/en/observability/redirects.asciidoc @@ -369,12 +369,12 @@ Refer to <>. [role="exclude",id="open-telemetry-with-elastic"] === OpenTelemetry API/SDK with Elastic APM agents -Refer to <>. +For information on using OpenTelemetry with Elastic, refer to https://elastic.github.io/opentelemetry/[Elastic Distributions of OpenTelemetry (EDOT)]. [role="exclude",id="open-telemetry-direct"] === OpenTelemetry native support -Refer to <>. +For information on using OpenTelemetry with Elastic, refer to https://elastic.github.io/opentelemetry/[Elastic Distributions of OpenTelemetry (EDOT)]. [role="exclude",id="open-telemetry-other-env"] === AWS Lambda Support @@ -394,7 +394,7 @@ Refer to <>. [role="exclude",id="open-telemetry-resource-attributes"] === Resource attributes -Refer to <>. +For information on using OpenTelemetry with Elastic, refer to https://elastic.github.io/opentelemetry/[Elastic Distributions of OpenTelemetry (EDOT)]. [role="exclude",id="manage-storage"] === Manage storage @@ -900,7 +900,7 @@ Refer to <>. [role="exclude",id="apm-open-telemetry-with-elastic"] === OpenTelemetry API/SDK with Elastic APM agents -Refer to <>. +For information on using OpenTelemetry with Elastic, refer to https://elastic.github.io/opentelemetry/[Elastic Distributions of OpenTelemetry (EDOT)]. [role="exclude",id="apm-open-telemetry-other-env"] === AWS Lambda support @@ -941,3 +941,33 @@ Refer to <>. === Metadata Refer to <>. + +[role="exclude",id="apm-open-telemetry-resource-attributes"] +== Resource attributes + +For information on using OpenTelemetry with Elastic, refer to https://elastic.github.io/opentelemetry/[Elastic Distributions of OpenTelemetry (EDOT)]. + +[role="exclude",id="apm-open-telemetry-direct"] +== Upstream OpenTelemetry Collectors and language SDKs + +For information on using OpenTelemetry with Elastic, refer to https://elastic.github.io/opentelemetry/[Elastic Distributions of OpenTelemetry (EDOT)]. + +[role="exclude",id="apm-open-telemetry-known-limitations"] +== Limitations + +For information on using OpenTelemetry with Elastic, refer to https://elastic.github.io/opentelemetry/[Elastic Distributions of OpenTelemetry (EDOT)]. + +[role="exclude",id="apm-open-telemetry-collect-metrics"] +== Collect metrics + +For information on using OpenTelemetry with Elastic, refer to https://elastic.github.io/opentelemetry/[Elastic Distributions of OpenTelemetry (EDOT)]. + +[role="exclude",id="quickstart-monitor-hosts-with-otel"] +== Quickstart: Monitor hosts with OpenTelemetry + +Refer to https://elastic.github.io/opentelemetry/quickstart/[EDOT Quickstart Guide]. + +[role="exclude",id="monitor-k8s-otel-edot"] +== Quickstart: Unified Kubernetes Observability with Elastic Distributions of OpenTelemetry (EDOT) + +Refer to https://elastic.github.io/opentelemetry/use-cases/kubernetes/[Monitoring on Kubernetes with EDOT].