Quickstart for Kubernetes on Elastic Cloud Hosted
Elastic Stack Serverless Observability
Learn how to set up the EDOT Collector and EDOT SDKs in a Kubernetes environment with Elastic Cloud Serverless to collect host metrics, logs and application traces.
Make sure the following requirements are present:
- The Kubernetes OpenTelemetry Assets integration is installed in Kibana.
- The System integration is installed in Kibana. Select Add integration only to skip the agent installation, as only the integration assets are required.
Use the Add data screen in Elastic Observability to generate install commands that are already configured with the values you need.
- Open Elastic Observability.
- Go to Add data.
- Select what you want to monitor.
- Follow the instructions.
Follow these steps to deploy the EDOT Collector and EDOT OTel SDKs in Kubernetes.
-
Add the OpenTelemetry repository to Helm
Run the following command to add the charts repository to Helm:
helm repo add open-telemetry 'https://open-telemetry.github.io/opentelemetry-helm-charts' --force-update
-
Set up connection and credentials
Follow these steps to retrieve the managed OTLP endpoint URL for your Serverless project:
- In Elastic Cloud, open your Observability project.
- Go to Add data, Application, OpenTelemetry.
- Select Managed OTLP Endpoint in the second step.
- Copy the OTLP endpoint configuration value.
- Select Create API Key to generate an API key.
Replace
<ELASTIC_OTLP_ENDPOINT>
and<ELASTIC_API_KEY>
in the following command to create a namespace and a secret with your credentials.kubectl create namespace opentelemetry-operator-system kubectl create secret generic elastic-secret-otel \ --namespace opentelemetry-operator-system \ --from-literal=elastic_otlp_endpoint='<ELASTIC_OTLP_ENDPOINT>' \ --from-literal=elastic_api_key='<ELASTIC_API_KEY>'
-
Install the OpenTelemetry Operator using the
kube-stack
Helm chart with the configuredvalues.yaml
file.helm install opentelemetry-kube-stack open-telemetry/opentelemetry-kube-stack \ --namespace opentelemetry-operator-system \ --values 'https://raw.githubusercontent.com/elastic/elastic-agent/refs/tags/v9.0.1/deploy/helm/edot-collector/kube-stack/managed_otlp/values.yaml' \ --version '0.3.9'
The Operator provides a deployment of the EDOT Collector and configuration environment variables. This allows SDKs and instrumentation to send data to the EDOT Collector without further configuration.
-
Add a language-specific annotation to your namespace by replacing
<LANGUAGE>
with one of the supported values (nodejs
,java
,python
,dotnet
orgo
) in the following command.kubectl annotate namespace YOUR_NAMESPACE instrumentation.opentelemetry.io/inject-<LANGUAGE>="opentelemetry-operator-system/elastic-instrumentation"
The OpenTelemetry Operator automatically provides the OTLP endpoint configuration and authentication to the SDKs through environment variables. Restart your deployment to ensure the annotations and auto-instrumentations are applied.
For languages where auto-instrumentation is not available, manually instrument your application. See the Setup section in the corresponding SDK.
The following issues might occur.
The following error is due to an improperly formatted API key:
Exporting failed. Dropping data.
{"kind": "exporter", "data_type": }
"Unauthenticated desc = ApiKey prefix not found"
Format your API key as "Authorization": "ApiKey <api-key-value-here>"
or "Authorization=ApiKey <api-key>"
depending on whether you're using a Collector or SDK.
The managed endpoint has per-project rate limits in place. If you reach this limit, contact our support team.