World’s largest virtual agentic engineering & quality conference
Agent observability explained: what to trace, how evals and traces answer different questions, and what changes when you deploy multi-agent systems.

Sandeep Yadav
Author

Saurabh Prakash
Reviewer
Last Updated on: August 14, 2026
There is now a standard shape for an agent trace. OpenTelemetry describes it as a top-level invoke_agent span with child chat spans for each model call and execute_tool spans for each tool invocation.
The conventions are recent and still settling, which explains most of the confusion in this area. Teams instrument something, they instrument it differently from each other, and few can answer the question that matters after an incident: why did the agent do that.
This article covers the three practices that answer it together, and how they connect: evals before you ship, tracing after you ship, and what both have to change once more than one agent is involved.
TL;DR
Agent observability is the practice of instrumenting an AI agent so that a completed run can be reconstructed from the outside: the model calls it made, the tools it invoked and with what arguments, what those tools returned, how control moved between agents, and what the whole thing cost in tokens and wall time.
The shift from ordinary application observability is in the unit of interest. A web service trace answers what happened to a request. An agent trace has to answer why a decision was taken, because the code path was chosen at runtime by a model rather than written in advance by a developer.
For the wider practice across AI systems generally, the guide to AI observability and its benefits covers the foundations this builds on.
The two terms get used interchangeably and they are not the same scope. The difference decides what you can debug.
| Dimension | LLM observability | Agent observability |
|---|---|---|
| Unit of interest | One model call | One task, spanning many calls |
| Typical signals | Prompt, completion, tokens, latency, cost | All of those, plus tool calls, arguments, results, and handoffs |
| Question answered | Was this completion good? | Why did the run take this path and end here? |
| Common failure caught | Hallucination in a response | Right answer, wrong action, or the reverse |
| Shape of the data | A record per call | A trace tree per task |
If you only capture the model calls, an agent that chose a reasonable-looking but wrong tool produces a trace in which every individual completion looks fine. The fault is in the sequence, and the sequence is what the agent layer adds.
Start from the OpenTelemetry GenAI conventions rather than inventing a schema, because a convention that is still moving is easier to follow than to retrofit. The conventions define the agent span, the tool span, and the attributes that identify an agent.
invoke_agent {gen_ai.agent.name} the whole task
├── chat {model} a model call
├── execute_tool {gen_ai.tool.name} a tool the agent ran
│ arguments, result, error, duration
├── chat {model} the model reading that result
└── invoke_agent {sub-agent} work delegated onward
attributes worth setting on the agent span:
gen_ai.agent.id stable identity across runs
gen_ai.agent.name human-readable, appears in the span name
gen_ai.agent.version so a regression can be tied to a changeBeyond the span tree, three things are worth capturing because they are the ones you will wish you had during an incident.
That last one has a second payoff. An agent that records what it did is dramatically easier to verify later, which is the same property that determines how much of its behaviour any test harness can confirm.
Note: Execution records only become useful once something aggregates them across runs. TestMu AI turns per-run results into trends, flakiness signal, and root cause leads. Try it free.
Teams often adopt one and treat it as covering the other. They sit at different points in the lifecycle and fail in opposite ways.
| Agent evals | Agent observability | |
|---|---|---|
| When | Before shipping, and in CI on every change | After shipping, continuously |
| Input | Cases you chose | Traffic you did not choose |
| Question | Does it meet the standard? | What is it actually doing? |
| Strength | Repeatable, gate-able, comparable run to run | Real inputs, real distribution, real edge cases |
| Blind spot | Only measures what you thought to include | Only finds problems after users hit them |
A team with only evals ships confidently against a case set that drifts further from production every week. A team with only tracing learns about every problem from a customer. The agent evaluation framework guide covers the eval side in depth, and the roundup of AI agent evaluation tools compares what is available to run them.
The value is not in running both. It is in letting each one feed the other, which most teams never wire up.
The fourth point is the cheapest and the most often skipped. Without a shared version identifier, a rise in production failures cannot be attributed to the change that caused it.
Adding agents changes the shape of the problem rather than its size. One logical request stops being a line and becomes a tree, often executed partly in parallel.
Deployment practice follows from that. Ship one agent at a time behind a flag, keep the previous version routable so a bad release can be reversed without a rebuild, and hold the eval suite as the gate on the way in. The methodology for that gate is covered in the guide to multi agent testing, and the routing patterns these deployments rest on are in the piece on agentic AI orchestration.
Instrumenting everything at once produces a large bill and a dashboard nobody reads. This order gets a usable signal quickly.
On redaction, treat the trace as a system that will be read by more people than the agent's own logs. Tool arguments are exactly where account numbers and personal data end up.
Two parts of the TestMu AI platform map onto this lifecycle, and they sit on opposite sides of the ship line.
The distinction worth keeping is that Test Insights is observability over testing rather than over production traffic. It answers which checks are chronically unstable and whether quality is improving across builds, which is the question your eval suite raises and your APM cannot.
Start by adding two attributes: a stable agent id and a version on every trace you already emit. Without them no comparison across releases is possible, and with them most of the other analysis becomes available later without re-instrumenting.
Then wire the loop in one direction before both: take the next production run that goes wrong, promote it into your eval set, and gate the next release on it. For background on where this sits in a wider QA practice, see the guide to agentic quality assurance, and for the pre-release half of the loop, end to end agent testing.
To put run history behind a dashboard rather than a spreadsheet, create a free TestMu AI account and start with the analytics dashboard documentation.
Author
Sandeep Yadav is a Senior Software Engineer at TestMu AI (formerly LambdaTest), where he builds the platform's test intelligence and AI-native engineering systems. He has architected autonomous GitHub Apps, vector-search code intelligence, and self-diagnosing QA workflows, and designed distributed platforms that process 2M+ daily test executions and 1B+ events, turning high-volume test, log, and code data into intelligent, self-optimizing systems. He works on embedding reasoning models into production infrastructure to power autonomous review, root-cause analysis, and analytics workflows. He brings over four years of engineering experience with deep expertise in the Elastic Stack, Apache Kafka, and Redis. Earlier he engineered a GDPR-compliant, end-to-end-encrypted secure web-chat application at Mithi. A Facebook Hackercup 2021 Round 2 qualifier and merit-scholarship recipient, Sandeep holds a B.Tech in Electrical Engineering from Delhi Technological University.
Reviewer
Saurabh Prakash is an Engineering Manager at TestMu AI (formerly LambdaTest), where he leads engineering on agentic AI development and scalable system architecture for the quality engineering platform. He has also contributed to Test at Scale, the company's open-source test intelligence platform. He brings over 9 years of experience across Node.js, Java, Spring, MVC, data structures, algorithms, and scalable system design, with earlier roles as SDE 2 at Zomato, Senior Software Engineer at LogicHub, and Software Development Engineer at Directi. Saurabh holds a B.Tech in Computer Science and Engineering from Delhi Technological University.
Did you find this page helpful?
More Related Blogs
TestMu AI forEnterprise
Get access to solutions built on Enterprise
grade security, privacy, & compliance