Observability & Tracing · OpenTelemetry course
Reference · Glossary
OpenTelemetry glossary
The canonical vocabulary for this course. Every lesson uses these terms exactly as defined here. Coloured tags show which layer a term lives in: ■ produce · ■ ship · ■ backend · ■ Spring.
- Telemetry
- Greek tele (far off) + metron (measure) — “measurement at a distance.” Data a system emits about its own behaviour, shipped elsewhere to be examined, because you cannot stand inside a running process and look. Distinct from business data: an order row is what the system is for; a span saying
POST /orders took 45 ms is telemetry about it.
- Signal
- A category of telemetry. OpenTelemetry's docs list four — traces, metrics, logs and baggage — but only the first three are telemetry that is exported and stored. [src]
- Trace
- The path of one request through the system: a tree of spans that all share one trace ID. [src]
- Span
- One unit of work / one operation, with a name, start time and duration. A service emits many spans per request. Building block of a trace.
- Trace ID
- Identifier constant across every span in one request. This is what ties spans across services into a single trace.
- Span ID / Parent span ID
- Span ID identifies one span; parent span ID points at the span that caused it. Root spans have no parent. Parent links build the tree.
- Span Context
- Immutable identity carried by every span: trace ID, span ID, trace flags, trace state. This is the part that gets propagated. [src]
- Span Kind
- Role of a span:
SERVER (incoming sync call), CLIENT (outgoing sync call), INTERNAL (no boundary crossed), PRODUCER / CONSUMER (async messaging).
- Span Status
- One of
Unset (default), Error, Ok (set explicitly by the developer).
- Attributes · Events · Links
- Attributes = key/value metadata on a span. Events = a timestamped annotation within a span. Links = a causal reference to spans in another trace (async/fan-out).
- API produce
- Vendor-neutral interface for generating & correlating telemetry. Stable contract that library/app code compiles against. No-ops if no SDK is present. [src]
- SDK produce
- The concrete implementation of the API. Owns configuration, processing, sampling, batching, and export. The swappable engine behind the API.
- Instrumentation library produce
- Code that auto-generates telemetry from popular frameworks (HTTP, JDBC, etc.) so you don't hand-write spans.
- Resource · service.name produce
- Attributes describing the entity producing telemetry (service, host, pod).
service.name is the key one; defaults to unknown_service if unset. [src]
- Exporter ship
- Serialises telemetry and sends it onward — to a Collector or straight to a backend. OTLP exporters emit with no loss of information.
- OTLP ship
- OpenTelemetry Protocol — the wire format. Transports: gRPC (
:4317), HTTP/protobuf and HTTP/JSON (:4318). Traces POST to /v1/traces. [src]
- gRPC ship
- A language-agnostic RPC framework: your code calls a method that runs on another machine “as if it were a local object.” Runs over HTTP/2, serialises with Protocol Buffers (binary, schema-first). One of OTLP's two transports —
:4317; the alternative is plain HTTP on :4318. Same OTLP messages either way, different envelope. [src]
- Context propagation ship
- Moving span context across service/process boundaries. A propagator serialises it; the default is W3C Trace Context. [src]
- traceparent (W3C header) ship
- HTTP header carrying context between services:
version-traceid-parentid-flags, e.g. 00-a0892f35…-f03067aa…-01. [src]
- Baggage ship
- Arbitrary key/values propagated alongside context to correlate signals. OTel's docs do list it beside traces/metrics/logs, but it is the odd one out: it carries no telemetry and is never exported to a backend. Never put secrets/PII in it. [src]
- Collector ship
- Vendor-agnostic proxy that receives → processes → exports telemetry. Optional. Pipeline parts: receivers, processors, exporters, connectors, extensions. [src]
- Agent vs Gateway (Collector deployment) ship
- Agent = Collector next to each app (sidecar/host). Gateway = a shared standalone Collector service apps send to. Gateway is required for tail sampling. [src]
- Head vs Tail sampling ship
- Head = decide up front (fast, can't inspect whole trace). Tail = decide after seeing the whole trace (can always keep errors; needs stateful infra). [src]
- Backend backend
- The system that stores and displays telemetry. Not part of OpenTelemetry. Here: Jaeger, Dynatrace.
- Jaeger backend
- Open-source trace backend. v2 is built on the OTel Collector; ingests OTLP natively. Parts: collector, query (UI on
:16686), ingester, all-in-one. [src]
- Dynatrace backend
- Commercial observability backend. Ingests OTel three ways: direct OTLP (
/api/v2/otlp), OneAgent, or the Dynatrace OTel Collector. [src]
- Observation API Spring
- Micrometer's abstraction your Spring code emits. Each Observation, via a tracing
ObservationHandler, becomes a span. [src]
- Micrometer Tracing + bridge Spring
- Vendor-neutral tracing facade. The
micrometer-tracing-bridge-otel bridge routes spans to the OpenTelemetry tracer (alternative: -brave for Zipkin). [src]
- Actuator (tracing auto-config) Spring
- Spring Boot module that auto-wires the observation registry, tracer, bridge and OTLP exporter from
management.* config. [src]
- JMX (Java Management Extensions) Spring
- “A standard API for management and monitoring of resources such as applications, devices, services, and the Java virtual machine” — Java-only (JSR 3 / JSR 160). Your JVM exposes MBeans (readable attributes, invocable operations) and a tool such as JConsole connects in to read heap, threads or config. Not a transport and not comparable to gRPC: JMX is a door into the JVM that a tool pulls from; gRPC is how your app calls out. The two meet in the Collector's JMX receiver, which scrapes MBeans and re-exports them as OTLP metrics. [src] · [otel jmx]
- Spring Cloud Sleuth Spring
- Legacy. Boot 2.x tracing library; not supported on Boot 3.x. Its role moved into Micrometer Tracing + Observation. Mentioned only to contrast.