DocsProduction

How production monitoring works

The loop from a live trace to a scored session to an alert, and which page owns each step.

Last updated 2026-09-07

Testing tells you how your agent behaves on inputs you chose. Production monitoring tells you how it behaves on inputs real users chose. EvaliQA keeps the two on separate rails, so a noisy day in production never moves a release-gate number, and editing a test plan never changes what you watch live. This page is the map; every other page in this section is one stop on it.

Two roads, one metric library

A test run starts from a dataset and calls your app. Online evaluation starts from your app and calls nothing: it reads what your app reports. The metrics in the middle are the same catalogue, so a number on the online-evaluation Overview tab means the same thing as the number on an eval run.

Your app
Any stack. Reports each invocation as a trace, via the SDK or an OpenTelemetry exporter.
traces
EvaliQA
Store, group into sessions, attribute to users
Score: detectors, bound metrics, AI Analyst
Alert rules, once per analysed session
fan out
Your team
  • Slack, Discord, Teams, Telegram, email, webhook
  • Session and trace pages with findings
  • Promote a bad trace into a dataset
Testing pushes inputs into your app. Online evaluation listens to what your app did. Both end at the same metrics.

The loop, in five steps

  1. Connect. Your agent reports traces. Two doors: the Python SDK (eval-ai-library) or any OTLP/HTTP exporter. One API key, bound to one project, works for both. Runtime tracing.
  2. Read. Traces appear on Runtime eval within seconds, grouped into sessions and users, with a gantt timeline per session and a span tree per trace. The project's Observability tab aggregates volume, errors, cost, and latency. Explore sessions and traces.
  3. Score. Turn on Runtime auto-eval for the project and bind the metrics that matter. Each trace is scored as it arrives; each session is analysed 60 seconds after its last trace: deterministic detectors, conversation metrics, and optionally the AI Analyst. Online evaluation.
  4. Alert. Rules watch pass rates, mean scores, and finding severities per session and post to your channels, throttled so a bad deploy is one message, not forty. Alerts.
  5. Promote. The trace behind the alert becomes a dataset row with Add trace to dataset, and the next test run covers it. That is the only place the two roads meet, and it's on purpose.

What happens to one trace

Time from the moment your app finishes an invocation:

WhenWhat
ImmediatelyThe SDK POSTs the trace (one request, retried on 5xx and timeouts). An OTLP exporter ships its spans in batches; EvaliQA assembles them into one trace when the root span arrives, or after 20 quiet seconds if it never does.
Within secondsThe trace is on the Traces tab. With a session_id it's also on Sessions, and with a user_id on Users.
Immediately, if auto-eval is onEvery bound single-turn metric whose scope matches scores this trace. Verdicts show on the trace page under Trace metrics.
60 s after the session's last traceDetectors, conversation metrics, and the AI Analyst run over the whole session. Findings show on the session page. Alert rules are checked.
Same momentMatching rules post to their channels and the event lands in Alerts → History.

Two things follow from the table. A trace without a session_id is visible but never analysed, so set it. And a long conversation is scored once, at the end, not once per turn, because every new trace pushes the 60-second timer forward.

Which page owns what

You want toGo to
Create or revoke an API key, switch auto-eval on for a projectProject → Tracing tab
See volume, error rate, cost, latency, top tools over timeProject → Observability tab
Read one session's timeline and findings/runtime-eval/sessions
Read one trace's span tree, metric scores, judge reasoning/runtime-eval/traces
Find the heaviest or most failing users/runtime-eval/users
Bind metrics, set thresholds, watch pass rate drift/online-evaluation
Set up channels and rules, audit what fired/alerts
Turn a live trace into a test caseTrace page → Add trace to dataset

What it costs

Storing traces counts against your plan's runtime-trace allowance. Scoring is model calls on your own Platform AI agent, billed by your provider: one judge call per trace per bound metric, one call per session for the AI Analyst, none for the detectors. Online scoring also spends evaluated cases from the same pool as test runs. The Online evaluation page has the levers.