From 32d5962e0ceda6bad37714a1b3cfe804f77df756 Mon Sep 17 00:00:00 2001 From: Aleksandra Spilkowska Date: Tue, 2 Sep 2025 17:28:41 +0200 Subject: [PATCH 1/5] Add "missing app telemetry" page --- .../edot-sdks/missing-app-telemetry.md | 140 ++++++++++++++++++ troubleshoot/ingest/opentelemetry/toc.yml | 1 + 2 files changed, 141 insertions(+) create mode 100644 troubleshoot/ingest/opentelemetry/edot-sdks/missing-app-telemetry.md diff --git a/troubleshoot/ingest/opentelemetry/edot-sdks/missing-app-telemetry.md b/troubleshoot/ingest/opentelemetry/edot-sdks/missing-app-telemetry.md new file mode 100644 index 0000000000..3b61c8c8f2 --- /dev/null +++ b/troubleshoot/ingest/opentelemetry/edot-sdks/missing-app-telemetry.md @@ -0,0 +1,140 @@ +--- +navigation_title: No app-level telemetry in Kibana +description: Diagnose lack of telemetry flow due to issues with EDOT SDKs. +applies_to: + stack: + serverless: + observability: + product: + edot_sdk: ga +products: + - id: cloud-serverless + - id: observability + - id: edot-sdk +--- + +# No application-level telemetry visible in Kibana + +This page helps you diagnose the most common reasons application-level telemetry doesn’t appear when using {{edot}} (EDOT) SDKs: + +* [The SDK is disabled (`OTEL_SDK_DISABLED`)](#sdk-disabled) +* [Auto-instrumentation or SDK initialization runs at the wrong time](#auto-instrumentation-not-attached) +* [The runtime or framework isn’t supported, or is only partially supported](#framework-not-supported) + +## No telemetry and logs mention `SDK disabled` [sdk-disabled] + +If the logs mention `SDK disabled` or nothing at all, the SDK is likely disabled by configuration. + +Check the following: + +* **Environment variable** + + Many SDKs honor `OTEL_SDK_DISABLED=true` (or the equivalent in config files or flags). You can print the current value of the variable, for example: + + ```bash + printenv OTEL_SDK_DISABLED + ``` + + For details, see the [EDOT Node.js setup guide](opentelemetry://reference/edot-sdks/nodejs/setup/index.md) or [EDOT Python troubleshooting](../edot-sdks/python/index.md). + +* **Exporter settings that effectively disable signals** + + * `OTEL_TRACES_EXPORTER=none`, `OTEL_METRICS_EXPORTER=none`, or `OTEL_LOGS_EXPORTER=none` + * Sampler turned off: `OTEL_TRACES_SAMPLER=always_off` or sampling probability set to `0.0` + +* **Multiple configuration sources** + + CI/CD pipelines or container manifests (such as Kubernetes `env:` blocks) may override local settings. These environments often require setting variables at deployment time. + +### Resolution + +To fix the issue, try the following: + +* **Enable the SDK** + + Unset `OTEL_SDK_DISABLED` or set it to `false`. + +* **Enable exporters/sampler** + + Choose a valid exporter (for example, `otlp`) and a sampling strategy with a non-zero probability (for example, `parentbased_traceidratio` with a ratio > 0). + +* **Restart the process** + + Do that after changing any configuration. Some SDKs only read environment variables at startup. + +If telemetry is still missing, you can enable debug logging. Refer to [Enable debug logging for EDOT SDKs](https://www.elastic.co/docs/troubleshoot/ingest/opentelemetry/edot-sdks/enable-debug-logging/) for guidance. + +## Auto-instrumentation isn’t attaching [auto-instrumentation-not-attached] + +If auto-instrumentation isn’t attaching, or only partial data appears, the SDK or loader may be initializing too late, after the app or framework has already started. + +Check the following: + +* **What runs first** + + Ensure the SDK or auto-instrumentation loader runs before your app code, web server, or worker framework. + +* **Start-up mechanism by language** + + * **Java**: Use the `-javaagent:` flag as early as possible (for example using `JAVA_TOOL_OPTIONS`) so it loads before `main()`. + * **Node.js**: Use a preloader (for example `NODE_OPTIONS=--require `) or import the SDK before bootstrapping the app. + Refer to [Node.js SDK setup](opentelemetry://reference/edot-sdks/nodejs/setup/index.md). + * **Python**: Use the launcher (`opentelemetry-instrument`) or import/initialize the SDK before the framework. + * **.NET**: Set profiler environment variables before starting the process. + * **PHP**: Ensure the extension is loaded and PHP/FPM/Apache is fully restarted. + + If using Docker or Kubernetes confirm preloading flags or environment variables are placed where the actual process starts. + +### Resolution + +To fix the issue, try the following: + +1. Move agent/loader flags to the earliest possible point in your startup chain. +2. Confirm the loader runs. Debug logs should show detected instrumentations or patched modules. +3. Fully restart the service, as reloads are often insufficient for preloaders/agents. + +> **Tip:** In debug logs, look for lines that mention “installing instrumentation for …” or “detected framework … version …”. Lack of these hints usually means the loader didn’t run early enough. + +## App starts, SDK loads, but no telemetry for your framework [framework-not-supported] + +If the app and SDK load correctly but no spans, metrics, or logs appear for your framework, the runtime, framework, or library may not be supported or is only partially instrumented. + +Check the following: + +* **Compatibility tables** + + Verify that your runtime and frameworks are supported by the SDK. See the [EDOT SDK compatibility reference](opentelemetry://reference/compatibility/sdks.md) for more information. + +* **Major version mismatches** + + New major versions of frameworks may not yet be supported and can break auto-instrumentation. + +* **Partial coverage** + + Some scenarios may require manual instrumentation. + +### Resolution + +To fix the issue, try the following: + +* **Align versions** + + Upgrade or downgrade the SDK or framework to a supported combination. + +* **Add manual instrumentation** + + Instrument code paths not covered by the agent. + +* **Retest with a minimal app** + + Strip down to core dependencies to rule out issues introduced by third-party libraries. + +## Quick triage checklist + +| What you see | Check next | Likely fix | +|----------------------------------|-----------------------------------------------|------------| +| No telemetry at all | `OTEL_SDK_DISABLED`, exporters = `none`, sampler `always_off` | Unset `OTEL_SDK_DISABLED`, pick an exporter, use a non-zero sampler | +| No/partial data from web requests | Loader order (preload/agent flags early) | Move loader earlier; restart process | +| Only custom code shows spans | Framework not supported/recognized | Align versions or add manual instrumentation | +| Works locally, not on prod | Different env/flags in container or service | Match prod env settings; restart | +| Still unsure | Enable debug logging | Inspect logs for disabled/unsupported/delayed initialization hints | diff --git a/troubleshoot/ingest/opentelemetry/toc.yml b/troubleshoot/ingest/opentelemetry/toc.yml index 7cee5d7992..74a88ce434 100644 --- a/troubleshoot/ingest/opentelemetry/toc.yml +++ b/troubleshoot/ingest/opentelemetry/toc.yml @@ -20,5 +20,6 @@ toc: - file: edot-sdks/php/index.md - file: edot-sdks/python/index.md - file: edot-sdks/enable-debug-logging.md + - file: edot-sdks/missing-app-telemetry.md - file: no-data-in-kibana.md - file: contact-support.md From 7177405b36f64c8bd2d4ec265e05200f8da9b087 Mon Sep 17 00:00:00 2001 From: Aleksandra Spilkowska Date: Wed, 3 Sep 2025 10:30:51 +0200 Subject: [PATCH 2/5] Tidy up the tip, minor tweaks --- .../edot-sdks/missing-app-telemetry.md | 37 +++++++++---------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/troubleshoot/ingest/opentelemetry/edot-sdks/missing-app-telemetry.md b/troubleshoot/ingest/opentelemetry/edot-sdks/missing-app-telemetry.md index 3b61c8c8f2..c2bc5a191a 100644 --- a/troubleshoot/ingest/opentelemetry/edot-sdks/missing-app-telemetry.md +++ b/troubleshoot/ingest/opentelemetry/edot-sdks/missing-app-telemetry.md @@ -29,13 +29,9 @@ Check the following: * **Environment variable** - Many SDKs honor `OTEL_SDK_DISABLED=true` (or the equivalent in config files or flags). You can print the current value of the variable, for example: + Many SDKs honor `OTEL_SDK_DISABLED=true` (or the equivalent in config files or flags). You can print the current value of the variable, for example: `printenv OTEL_SDK_DISABLED`. - ```bash - printenv OTEL_SDK_DISABLED - ``` - - For details, see the [EDOT Node.js setup guide](opentelemetry://reference/edot-sdks/nodejs/setup/index.md) or [EDOT Python troubleshooting](../edot-sdks/python/index.md). + For more SDK-specific details, see the [EDOT Node.js setup guide](opentelemetry://reference/edot-sdks/nodejs/setup/index.md) or [EDOT Python troubleshooting](../edot-sdks/python/index.md). * **Exporter settings that effectively disable signals** @@ -46,7 +42,7 @@ Check the following: CI/CD pipelines or container manifests (such as Kubernetes `env:` blocks) may override local settings. These environments often require setting variables at deployment time. -### Resolution +### Resolution [res-sdk-disabled] To fix the issue, try the following: @@ -56,11 +52,11 @@ To fix the issue, try the following: * **Enable exporters/sampler** - Choose a valid exporter (for example, `otlp`) and a sampling strategy with a non-zero probability (for example, `parentbased_traceidratio` with a ratio > 0). + Choose a valid exporter (for example `otlp`) and a sampling strategy with a non-zero probability (for example, `parentbased_traceidratio` with a ratio > 0). * **Restart the process** - Do that after changing any configuration. Some SDKs only read environment variables at startup. + Restart after changing any configuration. Some SDKs only read environment variables at startup. If telemetry is still missing, you can enable debug logging. Refer to [Enable debug logging for EDOT SDKs](https://www.elastic.co/docs/troubleshoot/ingest/opentelemetry/edot-sdks/enable-debug-logging/) for guidance. @@ -76,28 +72,29 @@ Check the following: * **Start-up mechanism by language** - * **Java**: Use the `-javaagent:` flag as early as possible (for example using `JAVA_TOOL_OPTIONS`) so it loads before `main()`. - * **Node.js**: Use a preloader (for example `NODE_OPTIONS=--require `) or import the SDK before bootstrapping the app. - Refer to [Node.js SDK setup](opentelemetry://reference/edot-sdks/nodejs/setup/index.md). + * **Java**: Use the `-javaagent:` flag as early as possible so it loads before `main()`. + * **Node.js**: Use a preloader (for example `NODE_OPTIONS=--require `) or import the SDK before bootstrapping the app. Refer to [Node.js SDK setup](opentelemetry://reference/edot-sdks/nodejs/setup/index.md) for more information. * **Python**: Use the launcher (`opentelemetry-instrument`) or import/initialize the SDK before the framework. * **.NET**: Set profiler environment variables before starting the process. * **PHP**: Ensure the extension is loaded and PHP/FPM/Apache is fully restarted. If using Docker or Kubernetes confirm preloading flags or environment variables are placed where the actual process starts. -### Resolution +### Resolution [res-instrumentation] -To fix the issue, try the following: +To fix the issue, try the following steps: 1. Move agent/loader flags to the earliest possible point in your startup chain. 2. Confirm the loader runs. Debug logs should show detected instrumentations or patched modules. 3. Fully restart the service, as reloads are often insufficient for preloaders/agents. -> **Tip:** In debug logs, look for lines that mention “installing instrumentation for …” or “detected framework … version …”. Lack of these hints usually means the loader didn’t run early enough. +:::{tip} +In debug logs, look for lines that mention `installing instrumentation for …` or `detected framework … version …`. Lack of these hints usually means the loader didn’t run early enough. +::: ## App starts, SDK loads, but no telemetry for your framework [framework-not-supported] -If the app and SDK load correctly but no spans, metrics, or logs appear for your framework, the runtime, framework, or library may not be supported or is only partially instrumented. +If the app and SDK load correctly but no spans, metrics, or logs appear for your framework, the runtime, framework, or library may not be supported or are only partially instrumented. Check the following: @@ -113,7 +110,7 @@ Check the following: Some scenarios may require manual instrumentation. -### Resolution +### Resolution [res-framework] To fix the issue, try the following: @@ -131,10 +128,10 @@ To fix the issue, try the following: ## Quick triage checklist -| What you see | Check next | Likely fix | +| What you see | Check | Likely fix | |----------------------------------|-----------------------------------------------|------------| | No telemetry at all | `OTEL_SDK_DISABLED`, exporters = `none`, sampler `always_off` | Unset `OTEL_SDK_DISABLED`, pick an exporter, use a non-zero sampler | -| No/partial data from web requests | Loader order (preload/agent flags early) | Move loader earlier; restart process | +| No/partial data from web requests | Loader order (preload/agent flags early) | Move loader earlier and restart the process | | Only custom code shows spans | Framework not supported/recognized | Align versions or add manual instrumentation | -| Works locally, not on prod | Different env/flags in container or service | Match prod env settings; restart | +| Works locally, not on prod | Different env/flags in container or service | Match prod env settings and restart | | Still unsure | Enable debug logging | Inspect logs for disabled/unsupported/delayed initialization hints | From de90e9214b3a157a5d6eba6c5c0b3948d233cdff Mon Sep 17 00:00:00 2001 From: Aleksandra Spilkowska Date: Wed, 3 Sep 2025 12:37:09 +0200 Subject: [PATCH 3/5] Apply comments --- .../edot-sdks/missing-app-telemetry.md | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/troubleshoot/ingest/opentelemetry/edot-sdks/missing-app-telemetry.md b/troubleshoot/ingest/opentelemetry/edot-sdks/missing-app-telemetry.md index c2bc5a191a..fdd19a289d 100644 --- a/troubleshoot/ingest/opentelemetry/edot-sdks/missing-app-telemetry.md +++ b/troubleshoot/ingest/opentelemetry/edot-sdks/missing-app-telemetry.md @@ -15,32 +15,42 @@ products: # No application-level telemetry visible in Kibana -This page helps you diagnose the most common reasons application-level telemetry doesn’t appear when using {{edot}} (EDOT) SDKs: +This page helps you diagnose why application-level telemetry doesn’t appear when using {{edot}} (EDOT) SDKs: -* [The SDK is disabled (`OTEL_SDK_DISABLED`)](#sdk-disabled) +* [The SDK is turned off (`OTEL_SDK_DISABLED`)](#sdk-disabled) * [Auto-instrumentation or SDK initialization runs at the wrong time](#auto-instrumentation-not-attached) * [The runtime or framework isn’t supported, or is only partially supported](#framework-not-supported) +## Quick triage checklist + +| What you see | Check | Likely fix | +|----------------------------------|-----------------------------------------------|------------| +| No telemetry at all | `OTEL_SDK_DISABLED`, exporters = `none`, sampler `always_off` | Unset `OTEL_SDK_DISABLED`, pick an exporter, use a non-zero sampler | +| No/partial data from web requests | Loader order (preload/agent flags early) | Move loader earlier and restart the process | +| Only custom code shows spans | Framework not supported/recognized | Align versions or add manual instrumentation | +| Works locally, not on prod | Different env/flags in container or service | Match prod env settings and restart | +| Still unsure | Enable debug logging | Inspect logs for disabled/unsupported/delayed initialization hints | + ## No telemetry and logs mention `SDK disabled` [sdk-disabled] -If the logs mention `SDK disabled` or nothing at all, the SDK is likely disabled by configuration. +If the logs mention `SDK disabled` or nothing at all, the SDK is likely deactivated in the configuration. Check the following: * **Environment variable** - Many SDKs honor `OTEL_SDK_DISABLED=true` (or the equivalent in config files or flags). You can print the current value of the variable, for example: `printenv OTEL_SDK_DISABLED`. + Many SDKs honor `OTEL_SDK_DISABLED=true`, or the equivalent in config files or flags. You can print the current value of the variable, for example: `printenv OTEL_SDK_DISABLED`. - For more SDK-specific details, see the [EDOT Node.js setup guide](opentelemetry://reference/edot-sdks/nodejs/setup/index.md) or [EDOT Python troubleshooting](../edot-sdks/python/index.md). + For more SDK-specific details, refer to the [EDOT Node.js setup guide](opentelemetry://reference/edot-sdks/nodejs/setup/index.md) or [EDOT Python troubleshooting](../edot-sdks/python/index.md). -* **Exporter settings that effectively disable signals** +* **Exporter settings that effectively turn off signals** * `OTEL_TRACES_EXPORTER=none`, `OTEL_METRICS_EXPORTER=none`, or `OTEL_LOGS_EXPORTER=none` * Sampler turned off: `OTEL_TRACES_SAMPLER=always_off` or sampling probability set to `0.0` * **Multiple configuration sources** - CI/CD pipelines or container manifests (such as Kubernetes `env:` blocks) may override local settings. These environments often require setting variables at deployment time. + CI/CD pipelines or container manifests, such as Kubernetes `env:` blocks, might override local settings. These environments often require setting variables at deployment time. ### Resolution [res-sdk-disabled] @@ -62,7 +72,7 @@ If telemetry is still missing, you can enable debug logging. Refer to [Enable de ## Auto-instrumentation isn’t attaching [auto-instrumentation-not-attached] -If auto-instrumentation isn’t attaching, or only partial data appears, the SDK or loader may be initializing too late, after the app or framework has already started. +If auto-instrumentation isn’t attaching, or only partial data appears, the SDK or loader might be initializing too late, after the app or framework has already started. Check the following: @@ -125,13 +135,3 @@ To fix the issue, try the following: * **Retest with a minimal app** Strip down to core dependencies to rule out issues introduced by third-party libraries. - -## Quick triage checklist - -| What you see | Check | Likely fix | -|----------------------------------|-----------------------------------------------|------------| -| No telemetry at all | `OTEL_SDK_DISABLED`, exporters = `none`, sampler `always_off` | Unset `OTEL_SDK_DISABLED`, pick an exporter, use a non-zero sampler | -| No/partial data from web requests | Loader order (preload/agent flags early) | Move loader earlier and restart the process | -| Only custom code shows spans | Framework not supported/recognized | Align versions or add manual instrumentation | -| Works locally, not on prod | Different env/flags in container or service | Match prod env settings and restart | -| Still unsure | Enable debug logging | Inspect logs for disabled/unsupported/delayed initialization hints | From bfec03f9701d7b6d838cb893ae31e80c9ee4d34d Mon Sep 17 00:00:00 2001 From: Aleksandra Spilkowska Date: Mon, 22 Sep 2025 11:08:08 +0200 Subject: [PATCH 4/5] Apply SME comments --- .../edot-sdks/enable-debug-logging.md | 12 ++++ .../edot-sdks/missing-app-telemetry.md | 57 ++++++++++++++++--- 2 files changed, 60 insertions(+), 9 deletions(-) diff --git a/troubleshoot/ingest/opentelemetry/edot-sdks/enable-debug-logging.md b/troubleshoot/ingest/opentelemetry/edot-sdks/enable-debug-logging.md index 02aa946cbf..0a549d6a46 100644 --- a/troubleshoot/ingest/opentelemetry/edot-sdks/enable-debug-logging.md +++ b/troubleshoot/ingest/opentelemetry/edot-sdks/enable-debug-logging.md @@ -24,6 +24,18 @@ Enabling debug logging can help surface common problems such as: * Unsupported framework or language version * Sampling rate being set too low (resulting in missing spans) + +## Verify you're looking at the right logs + +* Ensure you’re checking logs for the same process that starts your app (systemd service, container entrypoint, IIS worker, etc.). +* For containerized environments such as Kubernetes/Docker: + * `kubectl logs -c ` (correct container name matters if there are sidecars) + * Check the new Pod after a rollout, as old Pods may show stale environment without your debug flags. +* Tail the place your launcher writes to, and make sure your debug environment variables and flags are applied to that process. +* Some environments redirect `stdout`/`stderr` to `files—confirm` the target (for example `/var/log/...`, platform log drains). +* Look for messages like `installing instrumentation for …`, `detected framework …`, or `exporter configured …`. If you don’t see these after enabling debug, your flags likely aren’t applied to the running process. + + ## General SDK troubleshooting tips Check your application logs for SDK-specific output and errors. If no logs appear at all, verify that: diff --git a/troubleshoot/ingest/opentelemetry/edot-sdks/missing-app-telemetry.md b/troubleshoot/ingest/opentelemetry/edot-sdks/missing-app-telemetry.md index fdd19a289d..37681db85c 100644 --- a/troubleshoot/ingest/opentelemetry/edot-sdks/missing-app-telemetry.md +++ b/troubleshoot/ingest/opentelemetry/edot-sdks/missing-app-telemetry.md @@ -21,16 +21,33 @@ This page helps you diagnose why application-level telemetry doesn’t appear wh * [Auto-instrumentation or SDK initialization runs at the wrong time](#auto-instrumentation-not-attached) * [The runtime or framework isn’t supported, or is only partially supported](#framework-not-supported) + ## Quick triage checklist +Use this table to quickly spot the usual causes and fixes. + | What you see | Check | Likely fix | |----------------------------------|-----------------------------------------------|------------| | No telemetry at all | `OTEL_SDK_DISABLED`, exporters = `none`, sampler `always_off` | Unset `OTEL_SDK_DISABLED`, pick an exporter, use a non-zero sampler | | No/partial data from web requests | Loader order (preload/agent flags early) | Move loader earlier and restart the process | | Only custom code shows spans | Framework not supported/recognized | Align versions or add manual instrumentation | -| Works locally, not on prod | Different env/flags in container or service | Match prod env settings and restart | +| Works locally, not on prod | Different environment/flags in container or service | Match prod environment settings and restart | | Still unsure | Enable debug logging | Inspect logs for disabled/unsupported/delayed initialization hints | +### EDOT central config toggles at a glance + +If you use central configuration using OpAMP, these options can mute or change signals even when local `OTEL_*` looks correct. + +| Toggle | Effect | Typical symptom | +|-----------------------------------------------|---------------------------------------------------------|-----------------| +| `deactivate_all_instrumentations` | Disables all auto-instrumentations | No spans/metrics/logs from instrumented libraries | +| `deactivate_instrumentations` | Disables selected instrumentation packages | Missing spans from specific frameworks/libraries | +| `send_traces` / `send_metrics` / `send_logs` | Per-signal send switch | Only some signals arrive | +| `elastic_otel_context_propagation_only` (Node.js) | Propagates context, doesn’t send it to the Collector | Cross-service context but nothing in Elastic | +| `sampling_rate` | Adjusts trace sampling ratio | Fewer/more spans than expected | +| `logging_level` | Changes SDK log verbosity | Affects debugging output only | + + ## No telemetry and logs mention `SDK disabled` [sdk-disabled] If the logs mention `SDK disabled` or nothing at all, the SDK is likely deactivated in the configuration. @@ -41,7 +58,12 @@ Check the following: Many SDKs honor `OTEL_SDK_DISABLED=true`, or the equivalent in config files or flags. You can print the current value of the variable, for example: `printenv OTEL_SDK_DISABLED`. - For more SDK-specific details, refer to the [EDOT Node.js setup guide](opentelemetry://reference/edot-sdks/nodejs/setup/index.md) or [EDOT Python troubleshooting](../edot-sdks/python/index.md). + For SDK-specific details, see: + * [Java](opentelemetry://reference/edot-sdks/java/setup/index.md) + * [.NET](opentelemetry://reference/edot-sdks/dotnet/setup/index.md) + * [Node.js](opentelemetry://reference/edot-sdks/nodejs/setup/index.md) + * [Python](opentelemetry://reference/edot-sdks/python/setup/index.md) + * [PHP](opentelemetry://reference/edot-sdks/php/setup/index.md) * **Exporter settings that effectively turn off signals** @@ -68,7 +90,7 @@ To fix the issue, try the following: Restart after changing any configuration. Some SDKs only read environment variables at startup. -If telemetry is still missing, you can enable debug logging. Refer to [Enable debug logging for EDOT SDKs](https://www.elastic.co/docs/troubleshoot/ingest/opentelemetry/edot-sdks/enable-debug-logging/) for guidance. +If telemetry is still missing, you can enable debug logging. Refer to [Enable debug logging for EDOT SDKs](enable-debug-logging.md) for guidance. Make sure to [verify that you're looking at the right logs](enable-debug-logging.md#verify-youre-looking-at-the-right-logs). ## Auto-instrumentation isn’t attaching [auto-instrumentation-not-attached] @@ -80,13 +102,30 @@ Check the following: Ensure the SDK or auto-instrumentation loader runs before your app code, web server, or worker framework. + **Using the OpenTelemetry Operator?** + + If you deploy using the OpenTelemetry Operator, verify that auto-instrumentation is injected correctly: + + 1. **Instrumentation resource**: Confirm the `Instrumentation` CR matches your runtime (Java/.NET/Node/Python/PHP) and sets the intended options (for example `java.javaAgent`, `dotnet.env`, or `node.env`). + 2. **Pod injection**: Check that your workload has the expected annotations (or namespace injection enabled) and that new Pods were rolled to pick up injection. + 3. **Environment variables and startup flags present**: Run `kubectl describe pod/`. In the output, under Containers, the Environment section should list the expected loader flags (for example `JAVA_TOOL_OPTIONS`, `DOTNET_*`, or `NODE_OPTIONS`) and volume mounts for agents. + 4. **Webhook and injector logs**: Inspect the Operator and injector webhook logs for errors or skipped injections. + 5. **Restart and rollout**: After changing the `Instrumentation` or annotations, perform a rollout so containers start with the updated environment variables and startup flags. + + If you use EDOT-specific images or settings, align the Instrumentation config with EDOT’s SDK guidance for that language (see links below). + + * **Start-up mechanism by language** - * **Java**: Use the `-javaagent:` flag as early as possible so it loads before `main()`. - * **Node.js**: Use a preloader (for example `NODE_OPTIONS=--require `) or import the SDK before bootstrapping the app. Refer to [Node.js SDK setup](opentelemetry://reference/edot-sdks/nodejs/setup/index.md) for more information. - * **Python**: Use the launcher (`opentelemetry-instrument`) or import/initialize the SDK before the framework. - * **.NET**: Set profiler environment variables before starting the process. - * **PHP**: Ensure the extension is loaded and PHP/FPM/Apache is fully restarted. + * **Java:** Use the `-javaagent:` flag as early as possible so it loads before `main()`. Refer to [Java SDK setup](opentelemetry://reference/edot-sdks/java/setup/index.md). + + * **.NET:** Set the profiler/auto-instrumentation environment variables before starting the process. Refer to [.NET SDK setup](opentelemetry://reference/edot-sdks/dotnet/setup/index.md). + + * **Node.js:** Use a preloader (for example `NODE_OPTIONS=--require `) or import the SDK before bootstrapping the app. Refer to [Node.js SDK setup](opentelemetry://reference/edot-sdks/nodejs/setup/index.md). + + * **Python:** Use the launcher (for example `opentelemetry-instrument …`) or import/initialize the SDK before the framework starts. Refer to [Python SDK setup](opentelemetry://reference/edot-sdks/python/setup/index.md). + + * **PHP:** Ensure the extension is loaded and restart PHP-FPM/Apache so bootstrap hooks are active. Refer to [PHP SDK setup](opentelemetry://reference/edot-sdks/php/setup/index.md). If using Docker or Kubernetes confirm preloading flags or environment variables are placed where the actual process starts. @@ -110,7 +149,7 @@ Check the following: * **Compatibility tables** - Verify that your runtime and frameworks are supported by the SDK. See the [EDOT SDK compatibility reference](opentelemetry://reference/compatibility/sdks.md) for more information. + Verify that your runtime and frameworks are supported by the SDK. Refer to the [EDOT SDK compatibility reference](opentelemetry://reference/compatibility/sdks.md) for more information. * **Major version mismatches** From 885c5dfc9f732a59883856cf9d32efeb0988b912 Mon Sep 17 00:00:00 2001 From: Aleksandra Spilkowska Date: Mon, 22 Sep 2025 11:31:07 +0200 Subject: [PATCH 5/5] Minor wording updates --- .../ingest/opentelemetry/edot-sdks/missing-app-telemetry.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/troubleshoot/ingest/opentelemetry/edot-sdks/missing-app-telemetry.md b/troubleshoot/ingest/opentelemetry/edot-sdks/missing-app-telemetry.md index 37681db85c..4863dcfa16 100644 --- a/troubleshoot/ingest/opentelemetry/edot-sdks/missing-app-telemetry.md +++ b/troubleshoot/ingest/opentelemetry/edot-sdks/missing-app-telemetry.md @@ -34,7 +34,7 @@ Use this table to quickly spot the usual causes and fixes. | Works locally, not on prod | Different environment/flags in container or service | Match prod environment settings and restart | | Still unsure | Enable debug logging | Inspect logs for disabled/unsupported/delayed initialization hints | -### EDOT central config toggles at a glance +### EDOT central configuration toggles at a glance If you use central configuration using OpAMP, these options can mute or change signals even when local `OTEL_*` looks correct. @@ -56,7 +56,7 @@ Check the following: * **Environment variable** - Many SDKs honor `OTEL_SDK_DISABLED=true`, or the equivalent in config files or flags. You can print the current value of the variable, for example: `printenv OTEL_SDK_DISABLED`. + Many SDKs honor `OTEL_SDK_DISABLED=true`, or the equivalent in configuration files or flags. You can print the current value of the variable, for example: `printenv OTEL_SDK_DISABLED`. For SDK-specific details, see: * [Java](opentelemetry://reference/edot-sdks/java/setup/index.md) @@ -112,7 +112,7 @@ Check the following: 4. **Webhook and injector logs**: Inspect the Operator and injector webhook logs for errors or skipped injections. 5. **Restart and rollout**: After changing the `Instrumentation` or annotations, perform a rollout so containers start with the updated environment variables and startup flags. - If you use EDOT-specific images or settings, align the Instrumentation config with EDOT’s SDK guidance for that language (see links below). + If you use EDOT-specific images or settings, align the Instrumentation configuration with EDOT’s SDK guidance for that language (see links below). * **Start-up mechanism by language**