OTCA Practice Questions
Twenty-five single-best-answer questions, built the way the real OTCA builds them: a stem, four options, exactly one option that answers this stem better than the other three. They are split across all four domains from the OTCA blueprint in rough proportion to their weight — eleven on the API & SDK, seven on the Collector, five on Fundamentals of Observability, and two on Maintaining & Debugging Pipelines — so a strong or weak score in one section tells you something real about where your marks would actually land. This page is untimed and open-book on purpose: work through it slowly, read every explanation even for questions you got right, and only once these twenty-five stop surprising you should you move on to the two full, weighted, timed papers — Mock Exam · Set 1 and Mock Exam · Set 2. For the fuller walkthrough this bank is drawn from, see the sibling coverage at Platform Engineering's OTCA guide.
Picture a quiz card with four doors instead of a blank line. One door is right. The other three were built on purpose to feel almost right — one says something true, just not about the thing you were asked; one uses a big bossy word like "always" or "only," where real pipelines almost always run on trade-offs and version-dependent details; one is a setting, port, or capability that was simply made up, dressed to look official. Reading these questions is a skill on top of knowing the material. This page hands you both at once: real OTCA-shaped questions about the API, the SDK, and the Collector, and a full explanation of every door — not just which one was right, but why each wrong one was built the way it was.
How this bank is built
☺ Like you're 10: The biggest pile of questions covers the biggest part of the real test. Study in that order and you're spending your time where the marks actually are.
The OTCA curriculum weights its four domains 46 / 26 / 18 / 10, and this bank mirrors that shape rather than splitting twenty-five questions evenly into piles. The API & SDK alone gets nearly half the bank, because it's nearly half the real paper; Maintaining & Debugging Pipelines — the domain candidates most often skim, because it sounds like an afterthought next to "the data model" — still earns two full questions, because a fixed, answerable toolkit is exactly what a small weighted domain should feel like.
| Domain | Blueprint weight | Questions here | Numbers |
|---|---|---|---|
| 🐘 The OpenTelemetry API & SDK | 46% | 11 | Q1–Q11 |
| 🐦 The OpenTelemetry Collector | 26% | 7 | Q12–Q18 |
| 🦉 Fundamentals of Observability | 18% | 5 | Q19–Q23 |
| 🦊 Maintaining & Debugging Pipelines | 10% | 2 | Q24–Q25 |
| Total | 25 | Q1–Q25 | |
Every question below asks for the single best answer, not the only true sentence in the list. On several of these, two options are individually defensible — that's deliberate. Read the exact question being asked before you look at the options, form your own answer, then compare it to what's on offer. If your answer isn't there, you've likely misread the question rather than found a flaw in it.
The OpenTelemetry API & SDK — 11 questions
☺ Like you're 10: One half of this is the rulebook every recording device has to follow. The other half is the actual recorder someone has to plug in and turn on — and nothing gets written down until they do.
Forty-six percent of the real exam sits here, and it rewards concrete recall over abstract description: the API/SDK split, the three signals and their exact fields, the pipeline you configure at start-up, context propagation, and the environment-variable surface that controls all of it without touching code. Notice as you go that Context Propagation is the one competency the curriculum names twice — once here, once again in the 10% debugging domain — because a trace that breaks at a service boundary is the signature failure this exam is built to catch.
Q1. Which statement most precisely describes the relationship between the OpenTelemetry API and the OpenTelemetry SDK?
- A. The API and SDK are two names for the same package; there is no meaningful difference.
- B. The API is the interface instrumentation code calls against and is a no-op until an SDK is registered; the SDK is the concrete implementation — providers, processors, samplers, exporters — that a process registers at start-up.
- C. The SDK is what library authors depend on; the API is used only by application authors, never by libraries.
- D. The API generates telemetry data on its own; the SDK's only job is deciding where to send it.
Show answer & explanation
Answer: B. A collapses a deliberate, load-bearing split. C reverses the whole point of the design — libraries depend on the API, precisely so that instrumenting a library never forces a telemetry vendor on whoever imports it; the SDK is what an application registers. D misdescribes the API as generating data on its own, when the defining fact about the API is that it does nothing — a true no-op — until an SDK is registered behind it.
Q2. A team wants to know, for a given span, which instrumentation library emitted it and which version of that library, separately from which service produced it. Which layer of OpenTelemetry's three-layer data shape holds that information?
- A. Resource — it names the service that produced the data, such as
service.nameandservice.version. - B. InstrumentationScope — it names the library that emitted the record and that library's own version, independent of the service's version.
- C. The signal record itself — spans, metrics and logs have no concept of "which library."
- D. Baggage — user-defined context propagated across service boundaries.
Show answer & explanation
Answer: B. A is a real layer but answers a different question — it names the service, not the library. C is false; the scope layer exists specifically because "which library, which version" is a distinct fact from both the service and the record. D is unrelated — baggage is user-defined cross-service context, not source metadata. The Resource → InstrumentationScope → record sandwich is worth being able to draw from memory; a surprising number of questions are really about which layer an attribute belongs to.
Q3. A span reports status: unset even though the HTTP call it represents returned a 500. Which span field is specifically meant to reflect that the operation the span represents failed?
- A. SpanKind
- B. status (unset / ok / error)
- C. links
- D. events
Show answer & explanation
Answer: B. SpanKind (A) is a role — internal, server, client, producer, consumer — not an outcome signal. Links (C) join a span to a causally related trace; they say nothing about success or failure. Events (D) can certainly record a 500 as a timestamped note inside the span, but the field an analysis tool checks first to summarize outcome is status — an instrumentation library that logs an event but never sets status.code = ERROR is exactly the gap this competency tests.
Q4. Which OpenTelemetry metric instrument has no asynchronous, observable, callback-driven form?
- A. Counter
- B. UpDownCounter
- C. Gauge
- D. Histogram
Show answer & explanation
Answer: D. Counter, UpDownCounter and Gauge (A, B, C) each also have an asynchronous, observable form collected by a callback at export time. Histogram is synchronous only — there is no observable histogram in the specification. This asymmetry is a favorite distractor precisely because it's easy to assume the four instruments are symmetric when they are not.
"I used to answer these instrument questions from vibes — 'counters count, histograms bucket' — and got Q4-shaped questions wrong constantly. What fixed it was writing all four instruments in a column with two more columns next to them: 'has an async form?' and 'what it's for.' Once histogram was the only 'no' in that column, on paper, in my own handwriting, it stopped being a fact I had to recall and started being a fact I couldn't un-see."
Q5. Two services in different languages both emit HTTP server spans using the attribute name http.request.method, with the same value shape. What does this specifically buy a dashboard built against that attribute?
- A. Nothing — semantic conventions are advisory naming suggestions with no practical effect.
- B. The dashboard works unmodified against any conformant service emitting the same conventional name, regardless of language or framework, because the attribute name and value shape are standardized rather than left to each team's preference.
- C. It guarantees both services run the identical SDK version.
- D. It replaces the need for a Resource attribute such as
service.name.
Show answer & explanation
Answer: B. A understates the entire value proposition of the domain — conventions are exactly what makes dashboards portable across a polyglot fleet, which is why they earn their own competency rather than being a footnote. C fabricates a guarantee conventions don't make; SDK versions and attribute naming are unrelated. D is false — conventions govern attribute names and shapes; they don't substitute for Resource identification, which is a separate, necessary layer.
Q6. In a typical SDK trace pipeline — provider, sampler, processor, exporter — which single component decides, before a span is even completed, whether that span will ultimately be exported at all?
- A. The exporter
- B. The processor
- C. The sampler
- D. The propagator
Show answer & explanation
Answer: C. The exporter (A) only sends whatever the processor hands it — by the time a span reaches the exporter, the sampling decision is long settled. The processor (B) buffers and batches spans that were already marked for recording; it doesn't decide who gets recorded in the first place. The propagator (D) carries context across a process boundary and has nothing to do with a local sampling decision. The sampler is specifically the component that makes the record/don't-record call, and it makes it early — at span start, not at export time.
Q7. Service A samples with ParentBased(TraceIDRatioBased(0.1)). Service B, downstream of A, uses a plain TraceIDRatioBased(0.5) — five times more permissive, and not deferring to the incoming decision at all. For a trace where Service A decided not to sample, what is the most likely consequence?
- A. No consequence — the 10% and 50% ratios never interact with each other.
- B. Service B may still independently decide to record and export its own spans for that same trace, producing a fragment for a trace Service A intentionally dropped — because Service B's sampler does not honor the parent's sampled flag.
- C. The trace is automatically discarded by the Collector because the two ratios don't match.
- D. Service A retroactively re-samples the trace once it observes Service B's decision.
Show answer & explanation
Answer: B. A is wrong precisely because the two ratios do interact — through the trace, not through each other directly. C and D both invent mechanisms with no basis: no component "discards on ratio mismatch," and a sampler never runs backward once a decision downstream has already been made. B is the real, named trade-off: a ParentBased wrapper is what makes a sampling decision consistent end to end; strip it off one hop and that hop starts making its own independent call, which is exactly how traces end up as inconsistent partial pictures.
Q8. A short-lived batch job creates a TracerProvider, records several spans, then calls os.Exit(0) without calling the provider's Shutdown method first. What happens to spans still sitting in the batch processor's buffer?
- A. They are flushed automatically by the language runtime's exit handler before the process actually terminates.
- B. They are lost — the batch processor only sends buffered spans on its timer or when explicitly flushed, and an abrupt exit gives it no chance to do either.
- C. They are written to local disk automatically for the next process to pick up.
- D. The OTLP exporter retries them once the process restarts.
Show answer & explanation
Answer: B. A fabricates a runtime guarantee that doesn't exist for most languages' SDKs. C invents a local-disk fallback that would need something like the Collector's file_storage extension — which lives on the Collector side, not inside an application SDK, and isn't automatic even there. D is nonsensical: a terminated process has no state left to retry from. Providers buffer; Shutdown is the only clean way to flush that buffer, which is exactly why the doc-standard trace pipeline always ends with defer tp.Shutdown(ctx).
Q9. A service is configured with these environment variables:
OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector.observability:4317 OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
Telemetry from this service never arrives at the Collector, and the application logs show no error. What is the most likely cause?
- A. The Collector is down.
- B. The port and the protocol disagree —
4317is the gRPC port, but the protocol is set tohttp/protobuf; HTTP listens on4318— and this class of mismatch tends to fail silently rather than raise an application-visible error. - C.
OTEL_EXPORTER_OTLP_ENDPOINTis spelled incorrectly and is being silently ignored. - D. Environment variables are never read for OTLP configuration; only code-based configuration works.
Show answer & explanation
Answer: B. A is a generic guess the stem gives you no evidence for. C invents a spelling error nowhere in the given config. D is flatly false — the entire point of the OTLP environment-variable surface is that it works without touching code. The setup given is the textbook version of the classic OTLP trap: endpoint and protocol are two settings that must agree, and a mismatched pair fails silently from the application's point of view, which is exactly the symptom described.
Q10. Which four pieces of information does a W3C traceparent header carry?
- A. Trace ID, span ID, service name, and sample rate.
- B. Version, trace ID, span ID (the "parent ID" from the receiver's point of view), and trace flags — including the sampled bit.
- C. Trace ID, baggage, tracestate, and status code.
- D. Service name, span kind, resource attributes, and timestamp.
Show answer & explanation
Answer: B. A swaps in "service name" and "sample rate," neither of which the header carries — service name lives on the Resource, and the header carries a sampled bit, not a rate. C confuses traceparent with its neighboring headers: baggage and tracestate are separate headers entirely, and status code isn't propagated at all. D lists real span/resource concepts that simply don't travel in this header. The actual four fields — version, trace ID, span ID, trace flags — are worth being able to point to in the raw string without hesitating.
Q11. An engineer proposes putting a customer's email address into OpenTelemetry baggage so every downstream service in a call chain can look it up without a database call. What is wrong with this plan?
- A. Nothing — baggage is encrypted in transit by default, so this is a safe pattern.
- B. Baggage rides in plaintext headers to every downstream service in the call chain — including third-party services outside your own systems — and is not automatically attached to spans, so it is meant for routing hints and tenant labels, never secrets or personal data.
- C. Baggage has a hard 16-byte size limit, so an email address would not fit.
- D. Baggage can only be read by the service that originally set it, so downstream services couldn't use it anyway.
Show answer & explanation
Answer: B. A is false — nothing about the W3C baggage header is encrypted by default; it's a plain key-value header. C borrows a real number from the wrong place: 16 bytes describes a trace ID's length, not any baggage size limit, and is a classic swapped-neighbor fabrication. D directly contradicts the entire purpose of baggage, which exists precisely so downstream services can read it — that's the feature, and it's also exactly why it's the wrong place for anything sensitive.
The OpenTelemetry Collector — 7 questions
☺ Like you're 10: One box, five kinds of Lego brick inside it, and a strict rule: a brick nobody actually plugged into the model doesn't do anything, no matter how carefully you built it.
Twenty-six percent of the paper, and almost all of it is one binary: what receives data, what changes it in flight, what sends it on, and the strict wiring rule that governs all three. Get the five component types and the pipeline-referencing rule solid before anything else here.
Q12. Which of the following is NOT one of the OpenTelemetry Collector's five component types?
- A. Receivers
- B. Processors
- C. Samplers
- D. Connectors
Show answer & explanation
Answer: C. "Sampler" sounds plausible because sampling genuinely happens in the Collector — tail_sampling is a real, named component — but it is a processor, not its own component type. The five named types are receivers, processors, exporters, extensions, and connectors; sampling decisions in the SDK use the separate term "Sampler," which is exactly the kind of cross-domain swap this exam likes to test.
Q13. In the config below, the batch processor is defined under processors: but is not listed in the traces pipeline's processor list:
processors:
memory_limiter: { check_interval: 1s, limit_percentage: 80 }
batch: { timeout: 5s, send_batch_size: 8192 }
service:
pipelines:
traces:
receivers: [otlp]
processors: [memory_limiter]
exporters: [otlp/backend]What happens to the batch processor at runtime?
- A. The Collector refuses to start, rejecting an unreferenced component.
- B. It still runs in the background and batches everything anyway.
- C. It is simply never instantiated for that pipeline — it does nothing, silently, with no warning or error.
- D. The Collector automatically appends it to the end of the pipeline for safety.
Show answer & explanation
Answer: C. A invents a validation the Collector doesn't perform — a defined-but-unreferenced component is legal config, just inert config. B and D both imagine the Collector being helpful in ways it explicitly is not. The rule that catches everyone: a component that is configured but never referenced in a pipeline under service.pipelines simply does not run — no warning, no data, no error. This is the single highest-yield fact in the whole domain.
Q14. Why is memory_limiter conventionally placed first in a Collector pipeline's processor list, with batch placed last?
- A. Processor order in the list has no runtime effect; it's purely a documentation convention.
- B. Processors run in the order listed.
memory_limiterneeds to shed load before the Collector's heap is threatened, so it goes first;batchshould run after any filtering or sampling has already reduced the data, so it wastes no work batching data that gets dropped anyway. - C. Alphabetical order is required by the Collector's configuration schema.
- D.
batchmust run first somemory_limiterhas already-batched data to measure against.
Show answer & explanation
Answer: B. A is false and directly contradicts Q13's own lesson — order in the list is execution order, and it matters a great deal. C invents a schema rule that doesn't exist ("memory_limiter" doesn't even sort before "batch" alphabetically, which is itself a tell). D reverses the actual dependency: batching first would mean wasting effort packaging data that a later filter or sampler was always going to throw away. Load-shedding first, batching last, is the standard, deliberate order for exactly the reasons in B.
Q15. A platform team wants to delete the http.request.header.authorization attribute from every span before it leaves the cluster, and mark any span with a 500-or-above response status as an error — without redeploying a single application. Which Collector component is built for exactly this?
- A. The
batchprocessor - B. The
transformprocessor, using OTTL statements - C. The
memory_limiterprocessor - D. The
health_checkextension
Show answer & explanation
Answer: B. batch (A) only buffers and groups data; it never edits it. memory_limiter (C) sheds load under pressure and has no editing capability at all. health_check (D) is an extension — outside the data path entirely, reporting readiness, not touching telemetry content. Redaction and conditional rewriting in flight is precisely the Transforming Data competency, and OTTL statements inside a transform processor are the concrete mechanism for it.
Q16. A platform runs one Collector as a DaemonSet on every node — an "agent" deployment — and nothing else. What can adding a separate "gateway" Collector — a scalable Deployment the agents forward to — do that the agent-only setup cannot?
- A. Nothing — agent and gateway Collectors are functionally identical.
- B. Give the fleet a single, cross-node place to do expensive, fleet-wide work such as tail sampling and per-tenant routing, which a per-node agent structurally cannot do because it only ever sees the spans that happen to land on its own node.
- C. Receive telemetry over OTLP — a capability only gateways support.
- D. Automatically rotate exporter credentials.
Show answer & explanation
Answer: B. C is false — agents receive OTLP just as well as gateways; that capability has nothing to do with deployment shape. D fabricates a credential-management feature the Collector doesn't have. The real, named trade-off is B: a gateway centralizes visibility across the whole fleet, which is exactly what per-node work spread across many separate agent instances cannot see or coordinate on its own.
Q17. A platform runs three gateway Collector replicas behind a Service, load-balanced round-robin at the network layer, each independently running tail_sampling. Traces intermittently come out incomplete. What is the most likely cause?
- A.
tail_samplingis fundamentally incompatible with the Collector and should never be used. - B. Round-robin network balancing can send different spans of the same trace to different replicas;
tail_samplingneeds every span of a trace in one instance to make its decision, which requires routing by trace ID — the job of theloadbalancingexporter — rather than plain network round-robin. - C. The receivers are misconfigured to accept only HTTP, not gRPC.
- D.
batchis missing from the pipeline, causing spans to arrive out of order.
Show answer & explanation
Answer: B. A overreaches into a blanket claim the stem gives no basis for — tail sampling is a normal, supported pattern when wired correctly. C and D both invent unrelated causes with no connection to the described symptom. This is the scaling domain's core lesson: tail sampling and spanmetrics are both stateful across a whole trace, and only routing by trace ID — via loadbalancing — guarantees that state lands in one place; ordinary network load balancing has no notion of "trace" at all.
Q18. Which statement correctly describes a Collector connector, such as spanmetrics?
- A. A connector is a special kind of receiver that can only accept OTLP.
- B. A connector joins two pipelines together — acting as the exporter of one and the receiver of the next — letting one signal, such as traces, derive another, such as RED metrics, inline in the Collector.
- C. A connector is an authentication extension used to secure the Collector's own admin endpoints.
- D. A connector is a client library used inside application code, not a Collector component at all.
Show answer & explanation
Answer: B. A misclassifies a connector as a plain receiver, dropping the "joins two pipelines" property that actually defines it. C describes an auth extension, a genuinely different component type. D places it in the wrong system entirely — connectors are Collector-side, never application code. B is the textbook definition: a connector is simultaneously the exporter of one pipeline and the receiver of the next, which is exactly how spanmetrics turns a trace pipeline into a metrics pipeline without leaving the Collector.
Take the pipeline config from the OTCA blueprint and, without looking anything up, write out the five component types on paper with one real example of each from memory — a receiver, a processor, an exporter, an extension, a connector. Then draw a single pipeline: which of your five examples could legally sit in service.pipelines.traces? (The extension can't — extensions live outside service.pipelines entirely, listed only under service.extensions.) That one omission is most of what Q12 and Q18 are testing.
Fundamentals of Observability — 5 questions
☺ Like you're 10: This is the smallest pile on the test, and it's small on purpose — it's the "why," and the exam mostly wants the "how."
Eighteen percent, covering Telemetry Data, Semantic Conventions, Instrumentation, and Analysis and Outcomes. Reading about observability in the abstract — the three pillars, golden signals, RED and USE — prepares you for this domain and roughly nothing else; 72% of the paper is the two pieces of concrete software above it.
Q19. A candidate studies only the "three pillars of observability," RED, and USE — without touching real SDK setup or Collector config. Which best describes why that candidate is under-prepared for the exam as a whole?
- A. Because Fundamentals of Observability is actually the largest domain, not the smallest.
- B. Because 72% of the paper is the API/SDK and the Collector — two pieces of concrete, configurable software — so reading about observability in the abstract prepares a candidate for, at most, the smallest single domain.
- C. Because the exam contains no fundamentals questions at all.
- D. Because Fundamentals questions are asked only as a tiebreaker for candidates on the pass/fail boundary.
Show answer & explanation
Answer: B. A directly contradicts the published weights — Fundamentals is 18%, the smallest of the three substantial domains. C is false; it's a real domain worth real marks, just not most of them. D fabricates an exam-mechanics rule with no basis. B states the actual shape of the paper plainly: two concrete pieces of software make up nearly three-quarters of it, and abstract observability theory alone only covers the smallest slice.
Q20. A team is deciding whether to build long-lived dashboards and alerts against a particular OpenTelemetry semantic convention attribute. What should they check first?
- A. Whether the attribute name is alphabetically before "m," since conventions are sorted for stability.
- B. The attribute's published stability level — conventions are versioned, and not every attribute carries the same stability guarantee, so building on an unstable one risks a rename or shape change underneath you.
- C. Whether the attribute is used by Argo CD, since that determines convention stability.
- D. Nothing — all semantic convention attributes are permanently frozen the moment they're published.
Show answer & explanation
Answer: B. A is an absurd, made-up rule. C reaches for a tool from an entirely different certification — Argo CD is GitOps tooling with no bearing on OpenTelemetry attribute stability — a cross-domain swap. D is an absolute-language trap that directly contradicts the premise of "stability levels" existing at all; semantic conventions are explicitly described as actively evolving, which is exactly why checking stability first, before building anything long-lived on top, matters.
Q21. A platform team wants every service in the cluster to emit traces immediately, without asking any application team to change a line of code. Which approach fits, and what does it cost compared to hand-written instrumentation?
- A. Manual instrumentation using the SDK directly in each service's source code — there is no way to get traces without code changes.
- B. Zero-code, automatic instrumentation — a Java
-javaagent, Python'sopentelemetry-instrument, or, on Kubernetes, the OpenTelemetry Operator injecting an agent from a pod annotation — which produces traces for common libraries out of the box, but cannot capture custom, business-specific spans that only a developer deliberately adding a span would think to create. - C. The
debugexporter, which instruments application code automatically as a side effect of being configured. - D. A
memory_limiterprocessor set to 100%, which enables full automatic instrumentation.
Show answer & explanation
Answer: B. A contradicts the stem's own requirement — "no code changes" — and overclaims that no alternative exists, when zero-code agents are exactly that alternative. C fabricates a capability for the debug exporter, which only prints telemetry to the Collector's log and has nothing to do with instrumenting code. D is nonsensical — memory_limiter governs load shedding, unrelated to instrumentation entirely. B correctly names the real trade-off named in the Agents competency: broad, zero-effort coverage in exchange for missing the custom spans only a human would think to add.
Q22. A latency dashboard shows a sharp spike in p99 request duration at 14:02. Which OpenTelemetry metric feature is specifically designed to let an engineer jump directly from that spike to one of the actual slow traces that caused it?
- A. Aggregation temporality
- B. Exemplars — individual metric data points that carry a trace ID, linking a statistical spike directly to a specific, concrete trace.
- C. Views
- D. The InstrumentationScope
Show answer & explanation
Answer: B. Aggregation temporality (A) is about whether a metric's values accumulate as delta or cumulative — a real, separate concept with no linkage to traces. Views (C) rename or re-aggregate metrics; they don't attach trace context. InstrumentationScope (D) just names the emitting library. Exemplars exist precisely to answer "which trace caused this spike," carrying a trace ID on the metric point itself so a click on the graph lands you in the trace.
Q23. OpenTelemetry is sometimes summarized as unifying the "three pillars" of observability. Once traces, metrics and logs share the same Resource and correlated trace-context fields, what actually changes compared to collecting each pillar with an unrelated, uncorrelated tool?
- A. The three pillars become a single signal type, and the distinction between traces, metrics and logs disappears entirely.
- B. An engineer can move directly between a log line, its enclosing span, and a metric spike for the same request, because a shared Resource identifies the same source across all three and correlated fields — a trace ID on a log line, an exemplar on a metric point — tie them together, rather than reasoning across three unrelated tools by hand.
- C. Correlation eliminates the need for sampling on traces, since metrics now supply complete trace data.
- D. Correlation is only possible if all three signals are stored in the same physical database.
Show answer & explanation
Answer: B. A overstates the result — the three signals stay genuinely distinct types; what changes is how easily you move between them, not that they merge. C is a fabricated causal claim; sampling and correlation are unrelated concerns. D is false — correlation works through shared identifiers, not shared storage; a Collector can happily route traces, metrics and logs to three different backends and correlation still holds via those IDs. B is the real value: navigation between signals, not signal fusion.
Maintaining & Debugging Observability Pipelines — 2 questions
☺ Like you're 10: The smallest pile of all — and it's a fixed toolbox question, not a trivia question. What do you reach for, and what happens when a pipeline gets overwhelmed?
Ten percent, but a fixed, learnable toolkit: backpressure and loss under pressure, and how telemetry stays queryable across a slow, staggered migration of convention versions.
Q24. A Collector's OTLP exporter is configured with sending_queue: { enabled: true, queue_size: 5000 } and no file_storage extension. The downstream backend goes down for twenty minutes and the queue fills completely. What happens to new spans arriving during that period?
- A. They are held indefinitely in the Collector's process memory until the backend recovers, however long that takes.
- B. Once the queue is full, further spans are dropped — the sending queue buffers in memory by default with no durability unless backed by a
file_storageextension, and a Collector that accepted unlimited data while a backend was down would eventually be OOMKilled instead. - C. They are automatically rerouted to the
debugexporter as a fallback. - D. The Collector pauses its receivers entirely until the backend comes back.
Show answer & explanation
Answer: B. A ignores the queue_size: 5000 cap the stem explicitly states — an unbounded queue is precisely what this configuration prevents. C invents an automatic failover the Collector doesn't perform; nothing reroutes silently to another exporter. D fabricates a global receive-pause behavior the Collector has no such feature for. Telemetry pipelines are lossy by design under sustained pressure — the real question is only where the loss is accepted, and here it's the sending queue, once it's full.
Q25. OpenTelemetry semantic conventions rename an attribute between one version and the next. A fleet has some services still emitting the old attribute name and some already emitting the new one. What mechanism lets both be queried together without a coordinated flag-day migration?
- A. The
schema URLrecorded on telemetry, paired with OpenTelemetry's published, machine-readable schema files describing the transformation between convention versions. - B. The
memory_limiterprocessor, which normalizes attribute names automatically. - C. Nothing — every service in the fleet must be redeployed simultaneously the moment a convention changes.
- D. The
health_checkextension, which reports which schema version each service is running.
Show answer & explanation
Answer: A. B fabricates a normalization capability memory_limiter doesn't have — its actual job is load shedding, unrelated to attribute names. C is the absolute-language trap, directly contradicting the entire reason schema management exists as a competency. D invents a purpose for health_check, which reports readiness, not schema versioning. The real mechanism is the schema URL plus the published schema files describing version-to-version transformations — exactly what keeps old and new telemetry queryable together during a slow migration.
Scoring yourself, and what to do with a miss
☺ Like you're 10: Getting it wrong isn't the problem — not knowing why you got it wrong is. Every miss fits into one of four boxes, and each box has its own fix.
Count your correct answers and divide by 25 to get a rough percentage — this bank is too small to be a statistically precise rehearsal of the real paper, but it's plenty large enough to tell you whether a domain needs more reading before you attempt Mock Exam · Set 1.
The Linux Foundation's Multiple Choice Exam FAQ states that a score of 75% or higher is required to pass any Linux Foundation multiple-choice exam, OTCA included, even though that figure isn't restated on the OTCA product page itself — see the OTCA blueprint for the full logistics table. This site is an independent, unofficial study resource, not affiliated with the CNCF or The Linux Foundation. Treat 75% here as a useful training target, but confirm the current pass mark, question count, and every other exam-day detail on the official Linux Foundation OTCA page before you register or pay for anything.
When you miss one, resist the urge to just note the correct letter and move on — that teaches you almost nothing. File it instead:
| Bucket | Signature | The fix |
|---|---|---|
| Didn't know it | The explanation names a term or fact that's genuinely new to you | Content gap — reread the matching section of the blueprint, then add it to flashcards |
| Knew it, misread it | You wince reading the explanation because you actually knew this | Process gap — note which word you skipped (a negative, a qualifier), and underline lead-ins from now on |
| Confused two neighbors | You picked the concept next door — Collector for SDK, aggregation temporality for exemplars | Write a one-line discriminator for the pair and keep it somewhere you'll see it again |
| Guessed and got lucky, or unlucky | You can't explain why the other three options are wrong even though you picked (or didn't pick) correctly | Treat it exactly like a miss — a right answer you can't defend is a gap wearing a disguise |
Whichever domain produced the most misses, weigh that against its blueprint weight before deciding where to spend the next study session — a rough score in the 46%-weighted API & SDK domain costs far more than the same rough score in the 10%-weighted debugging domain. The OTCA study plan lays out exactly how to sequence reading, this bank, and the two mock exams across the days you have.
Remy: Twenty-five questions, nine minutes, twenty-three right. New record.
Ellie: Which two did you miss?
Remy: Q9 and Q17. Doesn't matter, twenty-three's a great score!
Ellie: It matters enormously. Q9 was the OTLP endpoint-and-protocol trap — the classic, named gotcha in the heaviest domain on the paper. Q17 was Collector scaling, a much smaller line item. Ninety-two percent overall is hiding a real hole in your biggest domain.
Foxy: Wait, so a 4317-vs-4318 mistake on the real exam is worth exactly as much as any other question?
Gizmo: Ninety-two is basically a hundred, honestly. Go do the mock exam already, you've clearly got this. 😈
Timmy: Not until Remy can explain, out loud, why the other three options on Q9 were wrong — not just which letter he picked.
Remy: …Fine. Give me the explanation panel back.
1. Why does this bank have eleven API & SDK questions but only two on Maintaining & Debugging? 2. In Q9, what are the two settings that must agree, and what happens when they don't? 3. What's the difference between what Q3 (span status) and Q22 (exemplars) are each testing? 4. Name the three distractor families the schematic on this page shows, besides the key itself. 5. What score should you treat as your training target, and where does that figure actually come from? 6. Give one example of a "confused two neighbors" miss from this bank, and its one-line discriminator. 7. What should you do with a question you got right but can't explain?
Check your answers
- Because the bank mirrors the OTCA's own domain weights (46/26/18/10) rather than splitting evenly — the API & SDK is the single heaviest domain at 46%, so it earns proportionally more practice.
OTEL_EXPORTER_OTLP_ENDPOINTandOTEL_EXPORTER_OTLP_PROTOCOLmust agree: gRPC listens on port 4317, HTTP on 4318. A mismatched pair — a gRPC port with the HTTP protocol set, or vice versa — fails silently, with no error visible to the application.- Q3 tests whether you know which span field records outcome — the
statusfield, distinct from events or SpanKind. Q22 tests a metric feature — exemplars — that links a statistical spike back to one concrete trace. Both are about connecting a symptom to evidence, but at different layers of the data model. - Swapped signal or component (true, but about the wrong one), absolute language ("always," "never," "only"), and confident fabrication (an invented setting, port, or capability that sounds official).
- 75%. It comes from the Linux Foundation's own Multiple Choice Exam FAQ, which applies to every LF multiple-choice exam including OTCA — confirm it's still current on the official OTCA page before you rely on it.
- Any pair from the bank works, for example: aggregation temporality vs. exemplars — temporality is about how a metric's values accumulate over time (delta vs. cumulative); an exemplar is about linking one data point to a trace. Neither one does the other's job.
- Treat it exactly like a miss. Write out, in your own words, why each of the other three options is wrong — a right answer you can't defend is a gap you got lucky on, and it will not stay lucky under exam conditions.