in real lifeA courier marks a parcel “delivered, 200 OK” and the tracking page turns green. It never mentions that the parcel was left at the wrong door. Fast and delivered is not the same as right.
start byleave everything on and read the backend panel. Then try one switch at a time: turn the collector off and back on, drop sampling to 1%, and switch on the evaluator span.
words hereOpenTelemetry a vendor-neutral standard for emitting traces, so any tool can read themsignal one kind of telemetry: a metric, a log, or a tracemetric a number counted over time (latency, error rate). Cheap and always on, but aggregate: blind to any single wrong answerlog a line of text a service writes as it runs; detailed, but hard to connect across servicestrace the record of one whole requestspan one step inside a trace, with its own start and endattribute a labelled fact attached to a span: which model, how many tokens, which documenttokens the pieces of text a model reads and writes; you are billed per tokentraceparent the header that carries the trace id downstream, so every service’s spans join the same tracecontext propagation passing that header on at every step; skip it and the trace shatters into fragmentsexporter the piece inside your app that batches spans and sends them onwardcollector the service that receives spans, processes them, and forwards them to a backendbackend where traces are stored and viewed (Cloud Trace, CloudWatch, Jaeger)sampling keeping only a fraction of traces to save cost; head sampling decides before the request finishes, tail sampling afterevaluator a check that scores the answer’s quality and emits its own spanground truth the known-correct answer you score againstHTTP 200 the success status code: the request completed. It says nothing about whether the answer was rightretriever the step that fetches documents for the modelstale out of date: a document that no longer reflects the truthorphan fragment a span with no parent trace to attach to