Supported environments, languages, and frameworks
The environments, languages, and frameworks with a documented path for sending telemetry to CloudWatch Omni.
Environments
| Environment | Workload | How telemetry leaves | Signals | Deployment tooling documented | Procedure |
|---|---|---|---|---|---|
| Amazon EC2 | Applications, AI agents | Applications: CloudWatch agent on the host. AI agents: direct export from the ADOT SDK. | Applications: traces, metrics, logs. AI agents: traces. | AWS CLI, CDK (TypeScript, Python, Java), Terraform, CloudFormation | Applications · AI agents |
| Amazon ECS (Fargate) | Applications, AI agents | Applications: CloudWatch agent sidecar. AI agents: direct export from the ADOT SDK. | Applications: traces, metrics, logs. AI agents: traces. | AWS CLI, CDK (TypeScript, Python, Java), Terraform, CloudFormation | Applications · AI agents |
| Amazon EKS | Applications, AI agents | Applications: CloudWatch Observability add-on (agent DaemonSet). AI agents: direct export from the ADOT SDK. | Applications: traces, metrics, logs. AI agents: traces. | AWS CLI, Terraform, or CDK for the add-on; kubectl, Helm, or CDK for the application | Applications · AI agents |
| AWS Lambda | Applications, AI agents | Applications: Lambda delivers segments and logs itself; the ADOT layer adds handler spans. AI agents: the ADOT layer starts the OpenTelemetry runtime and the execution role signs trace exports. | Applications: traces, logs. AI agents: traces. | AWS CLI, CDK (TypeScript, Python, Java), Terraform, CloudFormation, AWS SAM | Applications · AI agents |
| Amazon Bedrock AgentCore | AI agents | The runtime exports traces. | Traces | AgentCore starter toolkit, CDK (TypeScript, Python), Terraform, CloudFormation | AI agents |
| Azure VM | Applications | CloudWatch agent on the VM, credentials federated from the VM's managed identity. | Traces, metrics, logs | Azure setup script | Applications |
| Azure Kubernetes Service | Applications | CloudWatch Observability Helm chart, credentials federated from workload identity. | Traces, metrics, logs | Helm, kubectl | Applications |
Application languages and frameworks
| Language | Auto-instrumentation | Frameworks with documented notes | Procedure |
|---|---|---|---|
| Python | opentelemetry-instrument launcher |
FastAPI, Flask, Django | Step 4, Python tab |
| Node.js | @opentelemetry/auto-instrumentations-node register hook |
Express, gRPC | Step 4, Node.js tab |
| Java | OpenTelemetry Java agent (-javaagent) |
Spring Boot, gRPC | Step 4, Java tab |
| .NET | Automatic instrumentation profiler for ASP.NET Core and gRPC services; SDK in code for console applications | ASP.NET Core, gRPC | Step 4, .NET tab |
-
Any of these languages works in any application environment above. The listed frameworks are traced with no code changes; other libraries may be covered by the OpenTelemetry registry for the language.
AI agent languages and frameworks
Each language column lists the libraries documented for that framework: the OpenTelemetry distribution, and the OpenInference instrumentor where one exists. The distribution is required on both paths and is documented for Python and Node.js only: AWS Distro for OpenTelemetry 0.20.0 or later for Python, 0.13.0 or later for Node.js.
| Framework | Python | Node.js | Recommended versions | Notes |
|---|---|---|---|---|
| LangGraph, LangChain | OpenTelemetry · OpenInference | OpenTelemetry · OpenInference | Python: langchain >=0.3.21,<2 Node.js: @langchain/core >=1.0.0,<2.0.0 |
Traces through the LangChain instrumentor. Python is zero-code; Node.js needs startup code. |
| Strands Agents | OpenTelemetry · OpenInference | OpenTelemetry | We recommend using the latest available Strands Agents version. | Built-in OpenTelemetry tracing on both languages, so the distribution needs no wiring: the SDK creates the agent, model, and tool spans itself. The Python OpenInference path attaches a span processor to the distribution's provider. Use one tracing path, not both, or the processor is inert. |
| CrewAI | OpenTelemetry · OpenInference | — | crewai >=1.10.0,<2 |
CrewAI is Python only. Zero-code. Requires setuptools<81 and CREWAI_DISABLE_TELEMETRY=true. |
| LlamaIndex | OpenTelemetry · OpenInference | — | llama-index-core >=0.13.0,<1 |
The LlamaIndex instrumentor is Python only. Call LlamaIndexInstrumentor().instrument() at startup; declaring the dependency alone produces no OpenInference spans. |
| OpenAI Agents | OpenTelemetry · OpenInference | OpenTelemetry · OpenInference | Python: openai-agents >=0.3.3,<1 Node.js: @openai/agents-core >=0.1.0 |
Python is zero-code once set_tracing_disabled(True) is removed. On Node.js, registering the instrumentation is not sufficient: the instrumentor attaches through the framework's own tracing processor, so you must also pass the imported SDK namespace to manuallyInstrument. Without that call, the agent creates no spans. |
| Vercel AI SDK | — | OpenTelemetry | ai >=3.3.0,<7.0.0 |
The Vercel AI SDK is Node.js only. The SDK emits its spans automatically once the distribution's provider is registered; no per-call telemetry flag is needed. Registering an OpenInference span processor has no effect on this path. |