Certifications · OTCA

OTCA — OpenTelemetry Certified Associate

The OpenTelemetry Certified Associate (OTCA) is the CNCF and Linux Foundation’s associate-level credential for the project that has quietly become the plumbing under every modern observability stack. Not a dashboard, not a database — the standard: one data model, one wire protocol, one set of attribute names, one Collector that receives, reshapes and routes everything. For a platform engineer it is the telemetry standard behind the CNPE’s Observability & Operations domain, and the only exam on the shelf that examines it properly. Here: what it is, whether it’s worth your money, the four official domains and weights from the CNCF curriculum, the substance behind each, and a study plan built from lessons already on this site.

☺ Explain it like I’m 10

Imagine every machine in a huge factory kept a diary — but each one wrote in a different language, in a different notebook, with different words for “broken.” Nobody could read the factory as a whole. OpenTelemetry is everyone agreeing on one language, one notebook shape, and one word for “broken” — plus a friendly postal worker (the Collector) who picks up every diary, tidies it, and delivers it wherever you want. The OTCA is a badge saying you understand that language and can run that postal service.

🐘Your host for this topic: Ellie the Elephant — she remembers everything, which is the entire point of telemetry. She’ll walk you through the data model, the SDK pipeline and the Collector, and she’ll tell you honestly when this badge isn’t worth your weekend.

What the OTCA is — and who it is for

☺ Like you’re 10: It’s an online multiple-choice test about one project — the one that collects and ships the data everything else draws pictures with. No cluster, no typing commands.

The OTCA is knowledge-based: multiple-choice questions in an online, remote-proctored session, with no terminal and no live cluster. It certifies that you understand OpenTelemetry’s data model, its API/SDK split, its configuration surface and its Collector well enough to design and operate a telemetry pipeline — not that your fingers can write instrumentation at speed.

Knowledge-based, but unusually concrete

What surprises people is where the weight sits. This is not a “three pillars of observability” quiz: fundamentals is the smallest of the three substantial domains at 18%, while nearly half the paper is the API and SDK and another quarter is the Collector. So the recall is concrete. You will be asked which processor belongs where in a pipeline, what a traceparent header contains, which environment variable sets the exporter endpoint, and what happens to a component that is declared but never referenced. Reading about OpenTelemetry is not enough — you need to have looked at real config and real SDK setup often enough that the shapes are familiar.

◆ Key idea

OTCA tests a specification and its reference implementations, not a vendor product. The data model, the semantic conventions, OTLP and the SDK pipeline are the spine of the whole exam; Jaeger, Prometheus and Grafana appear only as places the data lands. If you study your backend and skip the spec, you will answer the “analysis and outcomes” questions — one competency inside the smallest substantial domain — and struggle with almost everything else.

Who should sit it

Why a platform engineer would take it — and when to skip it

☺ Like you’re 10: Part of this test is exactly what a platform person does all day. Another part is what an app developer does all day. Be honest about which you are.

Be honest about the return: OTCA is a narrow associate credential and nobody gets hired on it alone. Its value to a platform engineer is that OpenTelemetry is the one observability component you are almost certainly on the hook for — instrumentation belongs to app teams, backends belong to a vendor or an SRE group, and the pipeline in the middle belongs to the platform.

The overlap with the CNPE — real, but partial

The CNPE’s Domain 4 — Observability & Operations — is 20% of that exam, and OpenTelemetry is named in its tooling. What the CNPE wants is the platform half: deploy a Collector, wire a pipeline, get traces flowing to a backend, enrich telemetry with Kubernetes metadata, keep cardinality and cost under control. That maps cleanly onto the whole 26% Collector domain — configuration, deployment, scaling, pipelines, transforming data — plus the Agents competency over in the API and SDK domain, which is where zero-code instrumentation lives.

Most of the 46% does not map. Views, aggregation temporality, exemplars, the log bridge and exporter queue tuning are application-instrumentation concerns. They make you better at the job — you cannot debug someone else’s missing spans without knowing how their SDK batches them — but they are not on the CNPE blueprint. Treat OTCA as depth in one CNPE domain plus a large bonus, not as CNPE prep the way CGOA is.

🦆 Dot’s-eye view

“I added the OTel SDK to my service, saw nothing in Grafana, and filed a ticket blaming the platform. Turns out my exporter was pointing at port 4317 with the HTTP protocol set — gRPC port, HTTP client. Once I understood that the API does nothing until an SDK is registered, and that the endpoint and the protocol are two separate settings that must agree, half my ‘platform bugs’ became my bugs.”

When to skip it

Skip it if any of these are true. You already operate OpenTelemetry at scale — if you have tuned a tail-sampling gateway and debugged a dropped-spans metric at 3am, the badge will teach you only the SDK internals you deliberately delegate. You need one certification for a job filter — recruiters screen on CKA, CKAD and CKS, not on OTCA. Your organisation runs a proprietary agent end to end — the concepts transfer, but you will be studying a pipeline you do not have, and retention is poor. And if you are three weeks from the CNPE, this is a detour: 46% of your revision would be off-blueprint. Take it if telemetry is genuinely part of your remit and you want to stop cargo-culting Collector config. The certifications overview shows where it really sits on the shelf.

The four official domains & their weights

☺ Like you’re 10: The test has four parts and they are wildly unequal. Almost half of it is one part: how the code that produces the data works.

These come straight from the CNCF’s published OpenTelemetry Certified Associate (OTCA) Exam Curriculum — the domain names, the percentages and the competency lists below are that document, not a paraphrase. The four weights sum to exactly 100% (46 + 26 + 18 + 10), across 20 competencies in total — if a summary you read elsewhere does not add up, it has been garbled. They are shown here largest-first; the curriculum itself lists Fundamentals of Observability first, then the API and SDK, then the Collector, with Maintaining and Debugging in a second column. The bars are drawn to scale:

Every competency, domain by domain

The full curriculum — four domains, twenty competencies, exactly as the CNCF publishes them, with the pages here that cover each:

DomainWeightCompetencies (as published)
The OpenTelemetry API and SDK46%Data Model · Composability and Extension · Configuration · Signals (Tracing, Metric, Log) · SDK Pipelines · Context Propagation · Agents
The OpenTelemetry Collector26%Configuration · Deployment · Scaling · Pipelines · Transforming Data
Fundamentals of Observability18%Telemetry Data · Semantic Conventions · Instrumentation · Analysis and Outcomes
Maintaining and Debugging Observability Pipelines10%Context Propagation · Debugging Pipelines · Error Handling · Schema Management

Reading the shape of this blueprint

Three things jump out. First: 72% of the paper is two pieces of software — the SDK you configure in an application, and the Collector you run as infrastructure. If your revision plan is “read about observability,” you have planned for 18% of the exam.

Second: Context Propagation is the only competency named twice, in both the 46% and the 10% domains. That is the curriculum telling you where candidates fail: a trace that breaks at a service boundary is the signature failure of a distributed pipeline, and you are expected to know both the mechanism and the debugging of it.

Third: Composability and Extension is doing quiet work. OpenTelemetry’s whole design is pluggable interfaces — swap a sampler, add a processor, register a custom exporter, build a Collector distribution with exactly the components you need. Questions phrased “how would you add X?” are asking which extension point you would reach for.

What you actually need to know

☺ Like you’re 10: Here’s the real substance — how the data is shaped, how the code that makes it is wired, how the trace gets carried between services, and what the postal worker in the middle does.

The data model, and the conventions that name everything

Every piece of OpenTelemetry data has the same three-layer shape: a Resource (attributes describing what produced thisservice.name, service.version, k8s.pod.name), an InstrumentationScope (which library emitted it, and its version), then the signal record itself. Learn that sandwich — a surprising number of questions are really about which layer an attribute belongs to.

SignalThe recordWhat you must be able to say
TracesSpanTrace ID, span ID, parent span ID, name, SpanKind (internal, server, client, producer, consumer), start/end times, attributes, events, links, status (unset / ok / error). Events are timestamped notes inside a span; links join a span to a causally related trace.
MetricsInstruments & data pointsThe instruments — counter, up-down counter, histogram and gauge. Counter, up-down counter and gauge each also have an asynchronous (observable, callback-driven) form, collected by a callback at export time; histogram is synchronous only — there is no observable histogram, and that asymmetry is a favourite distractor. Plus aggregation temporality (delta vs cumulative), views for renaming or re-aggregating, and exemplars, which carry a trace ID on a metric point so a spike links straight to a trace.
LogsLogRecordTimestamp and observed timestamp, severity number and text, body, attributes, and the trace context fields that correlate a line with its span. Note the design difference: OTel ships no user-facing logging API — it bridges the library you already use.

Semantic conventions are the agreed names and values for attributes — service.name, http.request.method, url.path, server.address, error.type — with stability levels so you know which are safe to build on. That is the whole value proposition: a dashboard written against conventional names works on any conformant service in any language, which is why conventions are a competency and not a footnote.

API vs SDK, and the pipeline you configure

This is the single highest-yield idea in the exam. The API is what instrumentation calls — libraries depend on it, and it is a no-op by default. The SDK is the implementation you register at start-up, holding the providers, processors, samplers and exporters that actually do something. That split is why a library can be instrumented without forcing a telemetry dependency on its users, and why “I added spans but nothing appears” is nearly always “no SDK was configured.”

Each signal has the same pipeline shape: a provider, one or more processors (for metrics, a reader), and an exporter, with a resource attached to the provider. Here is the trace pipeline in Go — read it as a diagram, not as code to memorise:

res, _ := resource.Merge(resource.Default(), resource.NewWithAttributes(
    semconv.SchemaURL,                       // schema URL: which convention version these names follow
    semconv.ServiceName("checkout"),
    semconv.ServiceVersion("1.4.3"),
))

exp, _ := otlptracegrpc.New(ctx)             // exporter: OTLP over gRPC (default :4317)

tp := sdktrace.NewTracerProvider(
    sdktrace.WithResource(res),
    sdktrace.WithSampler(                    // sampler: honour the parent, else sample 10%
        sdktrace.ParentBased(sdktrace.TraceIDRatioBased(0.1))),
    sdktrace.WithSpanProcessor(              // processor: buffer and export in batches
        sdktrace.NewBatchSpanProcessor(exp)),
)
otel.SetTracerProvider(tp)                   // register the SDK behind the global API
otel.SetTextMapPropagator(propagation.NewCompositeTextMapPropagator(
    propagation.TraceContext{}, propagation.Baggage{}))
defer tp.Shutdown(ctx)                       // flush: without this you lose the last batch

Four things there are exam material on their own. Samplerparent-based respects the upstream decision so a trace is sampled consistently end to end; a ratio sampler applied independently per service shreds traces. Batch vs simple processor — batching is production, the simple processor exports one span at a time and exists for debugging. Shutdown — providers buffer, so a process that exits without flushing loses telemetry. And the resource, carrying a SchemaURL, which is where schema management starts. Almost all of it is settable without touching code, and that environment-variable surface is fair game:

OTEL_SERVICE_NAME=checkout
OTEL_RESOURCE_ATTRIBUTES=service.version=1.4.3,deployment.environment.name=prod
OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector.observability:4318
OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf   # must match the port: 4317 grpc, 4318 http
OTEL_TRACES_SAMPLER=parentbased_traceidratio
OTEL_TRACES_SAMPLER_ARG=0.1
OTEL_PROPAGATORS=tracecontext,baggage       # the default; add b3 for legacy interop
OTEL_METRIC_EXPORT_INTERVAL=60000           # milliseconds
OTEL_SDK_DISABLED=false                     # the kill switch, per process
⚠ The classic OTLP trap

Endpoint and protocol are two settings that must agree. gRPC listens on 4317, HTTP on 4318, and the HTTP exporter appends signal paths such as /v1/traces — while a signal-specific variable like OTEL_EXPORTER_OTLP_TRACES_ENDPOINT is used as given, without a path being appended. A mismatched pair fails silently from the application’s point of view. Expect at least one question built on exactly this.

Context propagation — the competency named twice

Inside a process, OpenTelemetry carries a Context holding the active span (and any baggage). Across a boundary, a propagator serialises it into carrier headers and the receiver deserialises it. The default is W3C Trace Context:

traceparent: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
             |  |                                |                |
          version  trace-id (16 bytes, 32 hex)   span-id (8 bytes) trace-flags (01 = sampled)

tracestate: vendorA=abc123,vendorB=xyz789     # vendor-specific, key-value, ordered
baggage:    user.tier=gold,tenant=acme        # user-defined context; NOT automatically
                                              # copied onto spans, and never for secrets

Three failure modes cover most of the questions. A service that does not extract the incoming context starts a brand-new trace, so the trace “breaks” at that hop. A service using a different propagator (B3, Jaeger) than its neighbour cannot read the header — which is why OTEL_PROPAGATORS takes a list, so you can speak both during a migration. And asynchronous work — a queue, a background task, a thread pool — loses context unless it is explicitly carried, which is what span links are for when strict parent-child does not fit. Baggage needs its own warning: it rides plaintext headers to every downstream service, so it is for routing hints and tenant labels, never credentials or personal data.

The Collector — five component types, and pipelines that must be wired

The Collector is one binary that receives telemetry, reshapes it and sends it on. It has exactly five component types, and knowing them cold is most of the 26%:

Component typeWhat it doesExamples you should recognise
ReceiversGet data in — push or pullotlp, prometheus, filelog, hostmetrics, k8s_cluster, kubeletstats, jaeger, zipkin
ProcessorsChange data in flight, in pipeline ordermemory_limiter, batch, k8sattributes, resourcedetection, attributes, filter, transform, tail_sampling
ExportersSend data out to a backendotlp, otlphttp, prometheus, prometheusremotewrite, loadbalancing, debug
ExtensionsCapabilities that are not part of a data pathhealth_check, pprof, zpages, file_storage, auth extensions
ConnectorsJoin two pipelines — exporter of one, receiver of the nextspanmetrics, servicegraph, count, routing, forward

Pipelines are per-signal (traces, metrics, logs) and live under service.pipelines. The rule that catches everyone: a component that is configured but never referenced in a pipeline simply does not run — no warning, no data, no error. Transforming data is its own competency and is mostly OTTL, the OpenTelemetry Transformation Language used by the transform and filter processors and the routing connector:

receivers:
  otlp:
    protocols:
      grpc: { endpoint: 0.0.0.0:4317 }
      http: { endpoint: 0.0.0.0:4318 }

processors:
  memory_limiter:          # FIRST in every pipeline — sheds load before the heap dies
    check_interval: 1s
    limit_percentage: 80
    spike_limit_percentage: 25
  k8sattributes: {}        # enrich with k8s.pod.name, k8s.namespace.name, k8s.node.name
  transform:               # OTTL: redact and normalise before anything leaves the cluster
    trace_statements:
      - context: span
        statements:
          - delete_key(attributes, "http.request.header.authorization")
          - set(status.code, STATUS_CODE_ERROR) where attributes["http.response.status_code"] >= 500
  batch:                   # LAST — batching after sampling/filtering wastes less work
    timeout: 5s
    send_batch_size: 8192

exporters:
  otlp/backend:
    endpoint: tempo-distributor.observability:4317
    sending_queue: { enabled: true, queue_size: 5000 }
    retry_on_failure: { enabled: true, initial_interval: 5s, max_elapsed_time: 300s }
  debug:
    verbosity: detailed    # print telemetry to the Collector log — debugging only

extensions: [health_check, zpages]

service:
  extensions: [health_check, zpages]
  pipelines:
    traces:
      receivers: [otlp]
      processors: [memory_limiter, k8sattributes, transform, batch]
      exporters: [otlp/backend]
  telemetry:
    metrics: { level: detailed }   # the Collector's own metrics — your first debugging tool

Deployment, scaling, and zero-code agents

Three deployment shapes, and the exam wants the trade-offs. No Collector — SDKs export straight to a backend: simplest, but every application then owns retries, credentials and backend coupling. Agent — a Collector per node (DaemonSet) or per pod (sidecar): local, low-latency, and the only place that can attach node- and pod-level context. Gateway — a scalable Deployment behind a Service that agents forward to: the right place for expensive fleet-wide work such as tail sampling, redaction and per-tenant routing. Most real platforms run both.

Scaling has one non-obvious rule: some processing is stateful and needs affinity. Tail sampling needs every span of a trace in one instance to decide, and spanmetrics needs the same to aggregate correctly — which is what the loadbalancing exporter is for, routing by trace ID to a consistent downstream Collector. Scraping with the prometheus receiver has the mirror problem, solved by the Operator’s target allocator, which shards scrape targets across replicas.

Agents in the instrumentation sense means zero-code instrumentation: the Java -javaagent, Python’s opentelemetry-instrument, Node’s --require hook, .NET’s automatic instrumentation. On Kubernetes the OpenTelemetry Operator injects them from an Instrumentation resource plus a pod annotation — the platform play, because app teams get traces with no code change:

apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
  name: default
  namespace: observability
spec:
  exporter:
    endpoint: http://otel-collector.observability:4317
  propagators: [tracecontext, baggage]
  sampler:
    type: parentbased_traceidratio
    argument: "0.1"
---
# then, on the workload's POD template (not the Deployment metadata):
#   annotations:
#     instrumentation.opentelemetry.io/inject-java: "observability/default"
# the Operator adds an init container that copies the agent in and sets the env vars

Debugging pipelines, error handling, and schema management

The 10% domain is small but very answerable, because it is a fixed toolkit. Debugging starts with the Collector’s own telemetry — counters for accepted, refused and dropped spans and for failed exports, which localise a fault to receiver, processor or exporter at a glance. Then the debug exporter at verbosity: detailed, zpages for live component state, health_check for readiness, and config validation before you ship. Sending known-good traffic with telemetrygen to bisect “is it the app or the pipeline?” is the standard move.

Error handling is about backpressure and loss. The exporter’s sending_queue buffers when a backend is slow — and drops when full unless backed by the file_storage extension; retry_on_failure retries transient failures with backoff but must not retry permanent ones forever; memory_limiter refuses data rather than let the process get OOMKilled. The SDK equivalent is the batch processor’s queue, which drops spans silently when full. Telemetry pipelines are lossy by design under pressure; the choice is where you accept the loss.

Schema management is the competency most people have never met. Conventions evolve and attributes get renamed, so telemetry carries a schema URL naming the version it was produced against, and OpenTelemetry publishes machine-readable schema files describing the transformations between versions — which keeps old and new telemetry queryable together while a fleet migrates, instead of forcing a flag-day rename.

How to prepare using this site

☺ Like you’re 10: Most of this test already has a page here. Read them in weight order and you’ve read the syllabus.

This course was written for the CNPE, so its OpenTelemetry coverage is platform-shaped — strongest exactly where OTCA’s Collector domain is, and a good scaffold for the rest. Study in weight order: the API and SDK first, because everything downstream is easier once the data model is solid, then the Collector, then fundamentals and debugging.

Domain-by-domain study map

OTCA domainWeightRead here
The OpenTelemetry API and SDK46%OpenTelemetry — the API/SDK split, the three signals, instrumentation and the OTLP wire, context propagation and sampling. Read it twice, then the official spec for the data-model detail it compresses.
The OpenTelemetry Collector26%OpenTelemetry (component types, deployment modes, the Operator’s CRDs, the config shape to memorise) · Know It Cold (the Collector manifest from memory) · Scaling & scheduling
Fundamentals of Observability18%Observability & Operations (pillars, golden signals, RED/USE, SLIs and SLOs — the “analysis and outcomes” competency) · Prometheus · Jaeger · Loki · Grafana · Glossary
Maintaining & Debugging Pipelines10%OpenTelemetry (gotchas and failure modes) · Triage playbook · Triage: delivery & observability · Reliability & incidents

A three-week pace

Three focused weeks is a realistic plan for someone who has used OpenTelemetry; stretch to four if the SDK is new to you.

DaysFocusWhat to do
1–4Data model & signalsRead OpenTelemetry end to end. Draw the resource → scope → record sandwich from memory, then list every span field and every metric instrument without notes.
5–8SDK pipelines & configurationWire one real service by hand: provider, sampler, batch processor, OTLP exporter, shutdown. Then do it again with environment variables only and confirm the behaviour matches.
9–11Context propagationTwo services, one call between them. Print the traceparent on both sides, then break it — drop the extract step, mismatch the propagators — and watch the trace split.
12–16The Collector (26%)Write an agent config and a gateway config from scratch and validate them; drill the manifest in Know It Cold.
17–21Fundamentals, debugging & revisionObservability & Operations for golden signals, SLIs, SLOs and error budgets. Then break your own pipeline four ways and diagnose each from Collector metrics alone, and work the observability practice set, the quiz and flashcards.
🐘 Ellie’s workshop · 30 min

On a throwaway cluster (kind or minikube), install the OpenTelemetry Collector with an otlp receiver and only the debug exporter at verbosity: detailed. Send it traffic with telemetrygen and watch spans print. Now run four experiments and name the competency each demonstrates: (1) remove batch from the processors list but leave it configured — nothing changes, because a component not referenced in a pipeline does not run; (2) point a sender at port 4317 with the HTTP protocol — silent failure, the configuration trap; (3) add a second Collector as a gateway and export agent → gateway — deployment; (4) add an OTTL transform that deletes an attribute and confirm it disappears downstream — transforming data. Half an hour, three domains. The lab track goes further — start with the observability & operations labs, which build the Collector and pipeline exercises out properly.

Exam logistics — and how to verify them

☺ Like you’re 10: It’s an online test you take from home with someone watching through your webcam. Prices and timings change, so always check the official page before you pay.

Some facts about the OTCA are structural and safe to state; others are exactly the sort the Linux Foundation revises without announcement. This page separates the two deliberately.

What we can state with confidence

ItemDetail
Full nameOpenTelemetry Certified Associate (OTCA)
ProviderCNCF & The Linux Foundation
LevelAssociate — alongside KCNA, KCSA, CGOA and CNPA
FormatKnowledge-based, multiple-choice. No cluster, no terminal, no performance tasks — unlike the performance-based exams (CKA, CKAD, CKS and the CNPE), which grade you on the cluster state you produce
DeliveryOnline and remote-proctored from your own machine: system check, webcam room scan, and government-issued photo ID matching your registration
BlueprintFour weighted domains, 20 competencies — as tabulated above, from the official CNCF curriculum
PrerequisitesNone. No prior certification is required, and OTCA is not required for anything else
Relationship to CNPEDeepens the CNPE’s 20% Observability & Operations domain — with substantial extra material (the SDK) that the CNPE does not test

What you must check on the official page

The moving parts are duration, question count, pass mark, price, retake policy, eligibility window and certification validity. The CNCF’s other associate exams — KCNA, KCSA and CGOA — have historically clustered around a common shape: a 90-minute multiple-choice sitting, a list price around US$250 including one free retake, a 12-month window in which to sit it, and a credential valid for two years — and they are closed-book, with no documentation permitted. Those price and window figures are an observed pattern across sibling exams, not a published promise about this one. The pass mark is the exception, and it is not a pattern at all: the Linux Foundation’s Multiple Choice Exam FAQ states that “a score of 75% or above must be earned to pass the Multiple Choice Exam”, and that requirement covers every Linux Foundation multiple-choice exam — the OTCA among them — so 75% is published, just not on the product page. The question count is still genuinely unpublished, so any figure you meet for it is unverified. Note too that the CNCF discounts often enough that the sticker price is rarely what people pay. Check the published curriculum on the official page matches the domains and weights transcribed above before you build a study plan on them.

⚠ The official page is the only authority

Price, duration, question count, cut score, retake terms, proctoring rules and even the domain weights are revised over time — this page reflects the landscape in 2026. Before you register, read the official Linux Foundation OTCA page and the candidate handbook end to end and confirm the current figures and system requirements. If anything here disagrees with them, they are right and this page is stale. Verify, then pay.

↗ Official OTCA page — Linux Foundation ◆ CNCF certification page ◆ Official CNCF curriculum repository ◆ OpenTelemetry documentation ◆ The OpenTelemetry specification

⌁ Note · a fast-moving project

OpenTelemetry’s signals mature at different rates — tracing and metrics have been stable longest, logs stabilised later, profiling is the newest arrival — and semantic conventions and the declarative file-configuration format are both actively evolving. Study the concepts here and the current details at opentelemetry.io; a two-year-old blog post about OTel component names is a genuine liability.

🎬 At the Platform Guild
🦊

Foxy: A whole certification for one library? Surely I just add the SDK and traces appear.

🐘

Ellie: Forty-six percent of the paper says otherwise. The API is a no-op until you register an SDK, and the SDK is a pipeline: provider, sampler, processor, exporter. Miss one and you get silence.

🦋

Mira: And the split is the point. Libraries depend on the API only, so instrumenting a library never forces a telemetry vendor on anyone who imports it.

👺

Gizmo: Or skip all that and shove the customer’s email address in baggage. Super handy for debugging! 😈

🐢

Timmy: Baggage rides plaintext headers to every downstream service, Gizmo — including the third-party ones. That’s not debugging, that’s a data-protection incident with a trace ID attached.

🐿️

Nutty: Ooh — found why traces stop at payments! It never extracts the incoming context, so it starts a fresh trace every time. Two half-traces, no parent.

🦆

Dot: Honestly the best bit was exemplars. I click a spike on a latency graph and land in the exact slow trace.

Where it sits in the ladder — and what to do next

☺ Like you’re 10: This is a specialist first badge. From here you either go deeper into building platforms, or wider across the other badges.

OTCA sits on the associate rung next to KCNA (Kubernetes fundamentals), KCSA (security fundamentals), CGOA (GitOps) and CNPA (platform engineering fundamentals). None of them gate anything, and OTCA is the most specialist of the group — it certifies one project rather than a discipline. The certifications overview lays out the whole shelf.

Go deep — the CNPE

The natural sequel. You now own the CNPE’s observability domain more thoroughly than the blueprint requires; what remains is the other four domains and the hands. Start with the CNPE exam guide for the format, then the lab track and the practice task bank — beginning with the observability set, where you’ll be pleasantly fast — then a timed mock exam. Keep Know It Cold open while you drill; its Collector and Prometheus manifests are the ones you’ll write against the clock.

Go wide, or go build

To broaden, CNPA is the obvious companion — its observability domain is largely revision for you, and that module is already written here — while the Kubernetes administrator track (CKA, then CKS) is what most platform roles screen for. To build, turn the badge into capability: ship an Instrumentation resource so any team gets traces from a pod annotation, put a gateway Collector in front of your backend and do redaction and tail sampling there once instead of in forty services, wire spanmetrics so RED metrics come free from traces, and use OpenCost and cardinality budgets to keep the bill honest. Then read reliability & incidents and check that the telemetry you collect actually answers the questions you ask at 3am — because that, not the certificate, is the outcome.

🐢 Timmy’s checkpoint

1. Name the four OTCA domains and their weights. 2. Which two domains together make up nearly three-quarters of the exam, and what does that imply about how you study? 3. What is the difference between the OpenTelemetry API and the SDK, and what happens if you instrument code but never register an SDK? 4. What are the five Collector component types, and what happens to a component that is configured but not referenced in a pipeline? 5. What does a traceparent header contain, and name two ways a trace can break at a service boundary. 6. Why must tail sampling and spanmetrics have all spans of a trace in the same Collector instance, and what routes them there? 7. Which exam details should you never trust from a third-party page — including this one?

Check your answers
  1. The OpenTelemetry API and SDK 46%; The OpenTelemetry Collector 26%; Fundamentals of Observability 18%; Maintaining and Debugging Observability Pipelines 10%.
  2. The API and SDK (46%) and the Collector (26%) — 72% between them. Both are concrete software with concrete configuration, so reading real SDK setup and real Collector YAML beats reading about observability in the abstract.
  3. The API is the interface instrumentation calls and is a no-op by default; the SDK is the implementation you register at start-up, holding providers, samplers, processors and exporters. Instrument without registering an SDK and no telemetry is produced at all.
  4. Receivers, processors, exporters, extensions and connectors. A component configured but not listed in a pipeline under service.pipelines is never instantiated — it silently does nothing, with no warning.
  5. traceparent carries version, trace ID, span ID and trace flags (including the sampled bit). A trace breaks when a service fails to extract the incoming context, when neighbouring services use different propagators (W3C on one side, B3 on the other), or across async boundaries where context is not explicitly carried.
  6. Both are stateful across spans of the same trace: a tail-sampling decision needs the whole trace, and span-derived metrics need consistent aggregation. The loadbalancing exporter routes by trace ID so all spans reach the same downstream Collector.
  7. Duration, question count, pass mark, price, retake policy, eligibility window and validity — and, over a long enough period, the domain weights themselves. Confirm them on the official Linux Foundation OTCA page and the CNCF certification page before registering — they are the only authority.