Skip to content

Quiz: Tempo

← Back to quiz index

5 questions

L0 (1 questions)

1. What is Tempo's role in an observability stack, and how does it receive trace data?

Show answer Tempo is a distributed tracing backend (part of the Grafana stack alongside Prometheus, Loki, and Grafana). It stores and queries traces. It receives trace data via push protocols — primarily OTLP (from OpenTelemetry Collector or SDK) on gRPC port 4317 or HTTP port 4318. Applications or OTel Collectors export spans to Tempo's receiver endpoint.

L1 (2 questions)

1. Grafana Tempo shows no traces but the Tempo pod is healthy and /ready returns 200. What is the most likely cause?

Show answer Tempo is purely receive-side — unlike Promtail which pulls logs, Tempo waits for traces to be pushed to it. If the application is not instrumented with OpenTelemetry or the OTEL_EXPORTER_OTLP_ENDPOINT is misconfigured, Tempo will be healthy but empty. Check whether the app has the OTLP endpoint set and whether that endpoint is reachable from the app pod.

2. How do you look up a trace by trace ID in Tempo and what can it tell you?

Show answer In Grafana: go to Explore, select the Tempo data source, enter the trace ID. Tempo returns the full trace: all spans across all services, with timing, status, and attributes. Each span shows: service name, operation, duration, status code, and parent span. This reveals: where latency is spent, which service errored, fan-out patterns, and gaps between spans (network/queue time).

L2 (2 questions)

1. When troubleshooting missing traces in Tempo, what is the correct order of checks from application to backend?

Show answer 1. Verify the application has OTel SDK configured and is creating spans.
2. Check OTEL_EXPORTER_OTLP_ENDPOINT points to the correct collector or Tempo host:port.
3. Verify network reachability from the app pod to the endpoint.
4. Check the OTel Collector logs for export errors (if using a collector).
5. Check Tempo pod health and logs.
6. Verify the Grafana Tempo data source URL is correct (typically http://tempo:3200).

2. What is the difference between head-based and tail-based trace sampling?

Show answer Head-based: sampling decision made at trace start (e.g., sample 10% of requests). Simple but misses rare errors (a 500 error in the unsampled 90% is lost). Tail-based: decision made after trace completes, so you can keep 100% of errors and slow traces while sampling routine ones. Tail-based requires a collector that buffers complete traces before deciding (more infrastructure). Use tail-based when debugging rare failures matters.