Get in Touch
Close

Your Cloud Story,
Engineered for Success

Contacts

US Office: Obsium, 6200,
Stoneridge Mall Rd, Pleasanton CA 94588 USA

Kochi Office: GB4, Ground Floor, Athulya, Infopark Phase 1, Infopark Campus Kakkanad, Kochi 682042

+91 9895941969

hello@obsium.io

LLM observability

LLM observability: what to monitor when nothing is technically broken

LLM observability is the practice of instrumenting AI applications so you can see what a model was asked, what it returned, what it cost, and whether the output was correct. It differs from traditional monitoring in one specific way: an LLM application can return a fast, valid, well-formatted response that is completely wrong, and no metric in a conventional APM tool will register a problem. Correctness has to be measured directly, using evaluators, because it cannot be inferred from status codes or latency.

Here’s what that looks like when it goes badly.

In July 2025, Deloitte Australia delivered a report to the Department of Employment and Workplace Relations under a contract worth AU$440,000. Within weeks, a University of Sydney academic found more than a dozen fabricated references attributed to his colleagues, alongside a quote invented from a federal court judgment.

Deloitte agreed to repay the final installment, and the revised version carried a new disclosure: Azure OpenAI had been used in drafting it (Accounting Times, CTV News).

From an infrastructure standpoint, nothing about that job was broken. The API returned 200s. Latency was normal. Token usage sat within budget. Every dashboard would have been green throughout.

Key takeaways

  • 89% of teams have observability for their AI agents. Only 52.4% run evaluations, which is the part that catches wrong answers (LangChain, 2026).
  • Traditional APM cannot detect hallucination, prompt injection, RAG decay, or prompt drift. None of them produce errors.
  • OpenTelemetry’s GenAI semantic conventions are still in Development status as of July 2026. Nothing is marked Stable, and attribute names have changed six times since 2024.
  • A viable open-source stack exists: OpenLLMetry for instrumentation, Langfuse or Phoenix for capture and evaluation, and the OpenTelemetry Collector you already run.
  • Evaluation scores, not error rates, are what you should alert on.

Why does traditional observability miss LLM failures?

Because traditional tools assume determinism, and LLM applications aren’t deterministic. Charity Majors put the underlying problem plainly in 2023, and it hasn’t aged:

“LLMs are black boxes that produce nondeterministic outputs and cannot be debugged or tested using traditional software engineering techniques.” — Charity Majors, CTO of Honeycomb, LLMs Demand Observability-Driven Development

In a conventional system, a wrong response means a bug, a bad config, or a failed dependency. You can reproduce it and write a test for it. LLM applications break every one of those assumptions:

  • The same input can produce different outputs on consecutive calls
  • A confident, well-formatted answer can be entirely fabricated
  • A one-line change to a system prompt can shift behavior across thousands of users
  • None of it throws an exception

Majors also names the consequence that trips up most engineering teams:

“With software, you typically start with tests and graduate to production. With ML, you have to start with production to generate your tests.”

That inversion is why LLM observability isn’t an afterthought. It’s the mechanism by which you learn what your system does at all.

Most teams can see their agents. Far fewer can tell if they’re right.

LangChain’s State of Agent Engineering, published June 2026 from 1,340 responses, puts numbers on the gap.

FindingFigure
Have agents running in production57.3%
Have implemented some observability89% (94% among those in production)
Have detailed step and tool-call tracing62% (71.5% among those in production)
Run offline evaluations52.4%
Run online evaluations37.3%
Run no evaluations at all29.5%

Observability adoption is close to universal. Evaluation is roughly half. Nearly nine in ten teams can watch their agent work, and only half can tell whether it worked.

The barriers data lines up. Quality was the top blocker to production for a third of respondents, ahead of latency at 20%. Among organizations over 10,000 employees, write-in answers named hallucinations and output consistency as the hardest part of ensuring quality. For enterprises above 2,000 people, security displaced latency as the second concern at 24.9%.

What are the main LLM failure modes?

Six recur, and none of them page you.

Failure modeWhat it looks likeWhy APM misses it
HallucinationA support bot invents a refund policy that doesn’t exist200 OK, normal latency, no exception
Prompt injectionRetrieved content or user input overrides your system promptLooks like an ordinary request
RAG degradationEmbeddings drift, the vector store goes stale, retrieval pulls near-missesQuality decays gradually, no threshold crossed
Token cost explosionA $0.02 prompt becomes $0.40 as context accumulatesCost isn’t a per-request metric in APM
Latency tailP50 fine, P99 at 45 seconds on long generationsAverages hide it, and users live in the tail
Prompt driftSomeone edits a prompt in a config file, nobody runs regressionsNo deploy, no diff, no correlation to the complaint spike

Prompt injection is not hypothetical. CVE-2025-53773 let an attacker reach remote code execution through GitHub Copilot by planting instructions in source files, web pages or GitHub issues. The payload wrote "chat.tools.autoApprove": true into the workspace’s .vscode/settings.json, switching off user confirmation prompts and handing the agent unrestricted shell access. Researcher Johann Rehberger reported it on 29 June 2025; Microsoft shipped the fix in the August 2025 Patch Tuesday (Embrace The Red).

Multi-step agents add an arithmetic problem. A step that’s 95% reliable gives you 0.95^10, or roughly 59% reliability across a ten-step workflow. Per-step accuracy that sounds acceptable compounds into a coin flip, and no individual span in that trace looks abnormal.

What should you monitor in an LLM application?

SignalWhy it matters
Token usage per requestCost control and context window management
Full input/output pairsYou cannot debug what you didn’t record
Prompt versionCorrelating behavior changes to prompt changes
Model versionSame code behaves differently across model updates
Latency per stageRetrieval, prompt assembly, inference, post-processing
Retrieval qualityWhich chunks were pulled and how relevant they were
Evaluation scoresThe closest available proxy for correctness
User feedbackThumbs up/down, corrections, session abandons
Safety signalsPII leakage, injection attempts, toxicity
Cost per traceThe only number your CFO will ask about

The one people skip is prompt version, and it costs the most later. Without it you cannot answer “what was the prompt at 3pm on Tuesday when quality dropped,” which is the only question that matters during an incident.

Are the OpenTelemetry GenAI semantic conventions stable yet?

No. As of 17 July 2026, no GenAI-specific span, event, metric or attribute is marked Stable. All of it sits in Development status.

This matters more than it sounds, because “OpenTelemetry GenAI semantic conventions” does not currently name one schema. The gen_ai.* surface was deprecated in the core semantic-conventions repository and moved out in v1.42.0 on 12 June 2026, and the dedicated GenAI repository has no tagged release yet. There is no versioned schema URL to pin against.

The attribute names have moved repeatedly:

ReleaseChange
v1.27.0 (Aug 2024)gen_ai.usage.prompt_tokens / completion_tokens became input_tokens / output_tokens
v1.37.0 (Aug 2025)gen_ai.system became gen_ai.provider.name; per-message events replaced by structured message attributes
v1.38.0 (Oct 2025)Added the gen_ai.evaluation.result event, so eval scores correlate to the operation they score
v1.40.0 (Feb 2026)Retrieval spans, cache token attributes, gen_ai.agent.version
v1.41.0 (Apr 2026)invoke_agent split into client and internal spans; reasoning tokens; streaming latency metrics
v1.42.0 (Jun 2026)All GenAI material moved out of the core repository

Frameworks emit several generations at once. John Hodge, who traced this in detail in July 2026, found a single Strands Agents application emitting the legacy gen_ai.system attribute with no gen_ai.provider.name, token usage duplicated under both attribute generations with identical values, and current-generation span names, all in one trace (full analysis).

“‘OpenTelemetry-compatible’ is not yet a sufficient schema contract for GenAI telemetry. Pin what you run, inspect what actually lands, normalize across generations, and date what you tested.” — John Hodge

And the design rule that follows:

“A Development-status external schema should never be your database contract.”

What this means for your build:

  • Coalesce across attribute generations in every query, and never sum the pairs, because frameworks duplicate the same value under both names
  • Pin framework, instrumentation, SDK and exporter versions together, since a minor framework bump can rename your attributes
  • Keep your own internal telemetry model and map outward at export time
  • Keep custom attributes out of the gen_ai.* namespace, because a future revision can claim any name in it

None of this argues against OpenTelemetry. It remains the right interchange layer, and the gen_ai.evaluation.result event added in v1.38.0 is exactly the primitive this space needed. It argues against treating “we’re on OTel” as though the schema question is settled.

What are the best open-source LLM observability tools?

ToolRoleWorth knowing
OpenLLMetry (Traceloop)GenAI instrumentation for common SDKsMigration status varies by package; test the exact version you run
LangfusePrompt, completion, token and cost captureSelf-hostable, ingests OTLP directly
Phoenix (Arize)Observability plus offline evaluationGood if you want eval and production monitoring together
OpenTelemetry CollectorThe pipelineThe same collector already handling your infrastructure telemetry

That last row is the point. If you already run an OTel collector for your Kubernetes environment, LLM traces land in the same pipeline as everything else. No second observability system, no separate on-call surface, no separate bill.

The alternative is a hosted LLM observability vendor sitting on the fastest-changing layer of your stack, with your prompts and payloads leaving your environment. We deploy the self-hosted version for clients specifically because those payloads often contain data that legally cannot go to a third party.

How do you evaluate LLM output quality?

With evaluators: functions that score an output, run against production traffic. Three broad kinds:

  • Rule-based. Did the output contain a phone number? Does it match a forbidden pattern? Cheap, deterministic, limited.
  • Model-as-judge. Is this answer grounded in the retrieved context? Another model decides. Flexible, slower, pricier per call. Used by 53.3% of teams running evals.
  • Human review. Still the most-used approach at 59.8%, and still the only one that catches genuinely novel failures.

Those figures come from the same LangChain survey, and the ratio matters: teams that evaluate seriously use both. Judge models give breadth, humans give depth, and traditional ML metrics like ROUGE and BLEU see little use because open-ended responses have many valid forms.

The working pattern: score production requests with lightweight evaluators, route low scores to human review, and save the failures as test cases. Production traces become your eval dataset, which is exactly the loop Majors described. It’s the closest thing an LLM application has to a test suite.

Five things teams consistently get wrong

  1. Logging completions but not prompts. Without the full assembled prompt, including retrieved context and system instructions, you’re debugging blind. Usually discovered mid-incident.
  2. Tracking cost at the account level. You learn the bill went up. You don’t learn which feature, customer, or prompt template caused it.
  3. Treating prompts as config rather than code. Prompts in a shared doc that five people can edit, with no version history and no review.
  4. Not sampling adversarial traffic. Injection attempts look like ordinary requests until you deliberately monitor for them.
  5. Shipping observability without evals. The 89%-versus-52% gap in the LangChain data is this mistake, measured.

A 30-day LLM observability rollout

WeekDo thisYou should end up with
1Instrument with OpenLLMetry, deploy an OTel collector, stand up self-hosted Langfuse or Phoenix. Record exact versions of everything.Full traces: prompt, completion, tokens, latency, cost
2Build two or three evaluators (groundedness, PII detection, known failure regexes). Run in shadow mode. Emit scores as gen_ai.evaluation.result.Tuned thresholds without breaking production
3Move prompts into Git with review required. Tag each deploy with a prompt version that appears in traces.The ability to answer “did quality change after that prompt update?”
4Alert on evaluator scores, not error ratesPages that fire on groundedness drops and cost-per-trace trends

Week 3 gets skipped because it feels like process rather than engineering. It’s the one that pays off during the first bad week.

Where Obsium fits

Honest scope: we’re not an LLM tooling vendor. We build and operate the open-source observability stack underneath your Kubernetes environment, which is where most production LLM applications end up running anyway.

Grafana, Prometheus, Loki, Tempo and OpenTelemetry, deployed inside your infrastructure. We handle upgrades, scaling, alert tuning and dashboards, which is the 10-20 hours a month your team would otherwise spend on maintenance.

The relevance here is direct. The collector we deploy is the same one that accepts GenAI traces, so your LLM telemetry lands in the same backend as the rest of your platform. Prompts and completions stay in your environment. And when the conventions shift again, which the release history says they will, normalizing across attribute generations happens in a pipeline you control rather than in a vendor’s ingestion layer.

We’ve also moved teams off $200k+ Datadog contracts onto this stack, which matters here for an unglamorous reason: the monitoring budget for your AI features shouldn’t have to compete with the monitoring budget for everything else. If that’s your situation, Datadog alternatives for Kubernetes teams covers the options, how Datadog billing actually works explains where the money goes, and our Kubernetes observability guide covers the foundation this sits on.

If you want to talk through what that foundation looks like, book a free 30-minute observability consultation. No sales deck, just an engineer-to-engineer conversation about your stack.

Frequently asked questions

What is LLM observability?

LLM observability is the practice of instrumenting AI applications to capture prompts, completions, token usage, latency, cost, and evaluation scores, so teams can debug and measure output quality. Unlike traditional monitoring, it treats correctness as a signal to be measured rather than inferred from error rates.

What’s the difference between LLM observability and LLM monitoring?

Monitoring tracks predefined metrics such as latency, throughput and error rate. LLM observability adds the ability to inspect individual traces, including the exact prompt and retrieved context, and to score whether the output was correct. Monitoring tells you the system responded; observability tells you whether the response was any good.

Can Datadog or New Relic do LLM observability?

Both have added GenAI support, and Datadog began native OpenTelemetry GenAI support in v1.37. The practical constraints are cost, since per-request telemetry on LLM traffic is expensive under per-GB and per-host models, and data residency, since prompts and completions leave your environment.

Do I need OpenTelemetry for LLM observability?

Not strictly, but it’s the only vendor-neutral option, and it means LLM telemetry shares a pipeline with the rest of your infrastructure. Be aware that the GenAI conventions are still in Development status, so pin your versions and normalize across attribute generations.

How much does LLM observability cost?

Self-hosted, it’s the storage and compute the stack consumes plus the engineering time to run it. Hosted platforms typically price per trace, per span, or per seat, which scales with request volume rather than infrastructure size.

Leave a Comment

Your email address will not be published. Required fields are marked *