What we mean by “client”
When we say “client” we mean the language-specific OpenTelemetry library embedded in your application (for example, the Python, Java, or JavaScript OTel packages). The client is responsible for enabling your code to generate telemetry (traces, metrics, logs) and typically exposes a stable API while delegating runtime behavior to a pluggable SDK. Quick example (Python):Core design goals
OpenTelemetry clients are designed around three high-level principles:- Easy to use — minimal effort required to add telemetry to applications.
- Uniform — consistent APIs across languages to reduce cognitive load for adopters.
- Flexible — support a variety of runtime use cases and backends.

- Full features out of the box — basic telemetry generation, batching, and export should work without custom implementation.
- Extensibility — you can customize exporters, sampling, processors, and experiment safely without touching core behavior.

API vs SDK — the fundamental separation
The OpenTelemetry specification enforces a clear separation of concerns:- API: stable, language-level interfaces used by instrumentations and application code to generate telemetry.
- SDK: the pluggable runtime that implements sampling, processing, batching, and exporting.
- Third-party libraries should depend only on the API, not on any specific SDK.
- Final application owners choose whether to include an SDK or which SDK/distribution to use.
- Instrumented libraries must behave correctly even if no SDK is present — relying solely on API behavior keeps them resilient.

Keep instrumentation dependent only on the API. This enables swapping SDKs or running with no SDK without breaking instrumented libraries.
SDK responsibilities and exporters
SDKs implement protocol-independent runtime behaviors such as batching, queuing, retry logic, and sampling. Exporters are protocol- or backend-specific components that send telemetry to external systems. Common exporters and uses:- OTLP: a common protocol to communicate with collectors and backends (see the OpenTelemetry proto definitions).
- Jaeger, Zipkin: tracing backends with their specific formats.
- Prometheus: metrics scraping and exposition.
- Console exporters: quick debugging or development.
- In-memory/mock exporters: unit and integration tests.

Modular client layout
OTel clients are typically modularized per signal (traces, metrics, logs). Each signal usually exposes four packages/modules:- API — public interfaces, types, and constants used by instrumentation.
- SDK — the runtime implementation offering configuration and pluggable components.
- Semantic Conventions — a catalog of recommended attribute names and conventions.
- Contrib — community-maintained integrations and auto-instrumentation plugins.

How clients fit into an observability architecture (example: Kubernetes)
Typical data flow and responsibilities:- Application code uses the API to create telemetry.
- SDKs handle sampling, processing, and exporting inside the application or service.
- The OpenTelemetry Collector receives telemetry from one or more sources, transforms it, and forwards it to external backends.
- In Kubernetes, the OTel Operator automates deployment and scaling of Collectors.

Quick recap: components and what they do
- API — how telemetry is generated and instrumented in your code.
- SDK — runtime logic: sampling strategy, batching, processing, exporting.
- Instrumentation libraries — automatic instrumentation for frameworks (e.g., Flask, Spring).
- Distributions — vendor-provided packaging and opinionated defaults for upstream OTel components (not forks).


- Exporters — adapters that connect telemetry to a backend.
- Collector — a centralized component to receive, transform, and export telemetry from multiple sources.
- Operator — a Kubernetes-native controller to manage Collector deployments.
Registry, contrib, and distributions
The OpenTelemetry registry lists instrumentation libraries and contrib packages (for example, Flask instrumentation points to theopentelemetry-python-contrib repo and Flask tracing integration).




References and further reading
- OpenTelemetry official docs: https://opentelemetry.io/docs/
- OpenTelemetry Collector: https://opentelemetry.io/docs/collector/
- OpenTelemetry Registry: https://opentelemetry.io/registry/
- OTel Operator: https://github.com/open-telemetry/opentelemetry-operator