A plain-English tour of observability for PMs, founders, and anyone tired of "it's a black box."
Your company's AI is a black box. Not in the impressive sci-fi way. In the boring, expensive way: a customer says the chatbot gave a weird answer, or the "summarize" button took eleven seconds, and nobody can tell you why. Requests go in, answers come out, and the middle is a mystery everyone quietly agrees to stop poking at.
Here is the part nobody explains in plain language. There is a whole category of software built to open that box, and it has an ugly name: observability. The name is terrible. The idea is simple, and once you see it, you cannot unsee it.
So let me show it to you the way I'd show a friend over coffee. One screenshot at a time, no code, one comparison the whole way through.
The whole idea, in one comparison
You would never drive a car with the dashboard taped over and the windshield painted black. No speedometer, no fuel gauge, no check-engine light, no idea how fast you're going or whether the engine is on fire. You'd be out of your mind to merge onto the highway like that.
That is how most teams run their AI.
Observability is just putting the dashboard back. It is the set of gauges that tell you how the thing is running right now, plus a dashcam that quietly records every trip, so that when something goes wrong you can rewind and see exactly what happened instead of guessing.
That's it. The rest is learning to read three screens.
Screen 1: the dashcam replay of one request
Engineers call it: a trace.
It really is: the dashcam footage of a single trip.
Someone asked your AI a question. This is the recording of that one question's journey, start to finish. Each bar is a leg of the trip. The top bar is the whole drive; the bar nested under it is the actual stop at the AI model, and its length is how long that stop took.
You don't need to read code to read this. You can see, at a glance, where the time went, the same way dashcam footage shows you exactly where you hit traffic. If that model bar is long, the model was slow. If a leg is missing or red, something broke there. When a customer says "it was slow at 2:14," an engineer pulls the footage for 2:14 and the answer is right there, measured in milliseconds, not argued about in a meeting.
That is the difference between "the AI felt slow" and "the model call took 1.1 seconds, here it is."
Screen 2: the dashboard
Engineers call it: a service dashboard, or APM.
It really is: the actual dashboard. The live gauges.
One trace is one trip. This is the panel that watches all of them at once, the cluster of gauges in front of you while the car is moving. Three of them matter, and you already understand all three:
- How fast it responds (latency). The needle everyone watches. When it climbs, the product feels sluggish.
- How hard it's working (throughput). How many requests are coming in, like the RPMs.
- How hot it's running (error rate). The share of trips that ended badly. This is your temperature gauge creeping toward the red.
You do not need to know what a "p99" is to notice a needle that was steady and then jumped. You just need to see it move. This is that gauge cluster, for your product.
Screen 3: the check-engine light
Engineers call it: an alert.
It really is: the check-engine light. The thing that comes on before you're stranded on the shoulder.
![]()
Red means the light just came on.
The first two screens are for when you go looking. This one comes looking for you. You set a line ("warn me if errors go above this," "warn me if it gets slower than that"), and when the car crosses it, the light comes on and a human gets a message.

Here is the line being crossed. The jagged line is how often the AI failed; the flat red dashes are the limit I set. Where one climbs above the other, the light comes on.
This is the difference between finding out your AI is broken from a warning light, and finding out from an angry customer on Twitter. One of those is a Tuesday. The other is a bad week.
There is a fourth screen I won't bury you in screenshots over: logs, the plain-text notes each step scribbles down as it works. Same tool, same idea. When the dashcam shows you where it broke, the logs usually tell you the exact sentence that broke it. Traces, gauges, warning lights, logs: that's the whole kit, and it all lives on one screen in SigNoz.
Why this matters more for AI than almost anything
Regular software breaks loudly. It stalls, throws a red error, stops. You notice.
AI breaks quietly, which is exactly why it needs the dashboard more than anything else you run:
- It gets slow without breaking. A model call that used to take one second starts taking five. No error, no stall, just a car that is mysteriously crawling and passengers who quietly get out.
- It fails softly. The model times out, or a guardrail refuses, and your app shrugs and serves something bland instead of lighting up.
- It hallucinates. It hands back a confident, wrong answer with a perfect green light. Nothing under the hood thinks anything went wrong.
- Agents make it worse. When an AI agent takes five steps and step three drives into a ditch, "the agent messed up" is useless. The dashcam shows you which step, with what input, and how long it sat there.
Without the gauges, every one of these is a shrug. With them, each one is a specific bar on a specific screen at a specific time. You stop debating what happened and start fixing it.
"But did you actually do this?" Yes, in about 15 minutes
Fair question, because this stuff is easy to write from the outside. So here is exactly what I ran. You can skip this box if commands make your eyes glaze, or hand it to an engineer.
I put SigNoz (an open-source observability tool) on my laptop with its installer, a five-line config file, and one command that brought it up at http://localhost:8080:
curl -fsSL https://signoz.io/foundry.sh | bash
foundryctl cast -f casting.yaml
Then I pointed a tiny stand-in "AI" service at it. The recording part is OpenTelemetry, the open standard for this. Most of it is automatic, a prefix on the run command with no code changes:
pip install opentelemetry-distro opentelemetry-exporter-otlp
opentelemetry-bootstrap -a install
OTEL_SERVICE_NAME=ai-gateway opentelemetry-instrument python app.py
The one thing I added by hand was a few lines to tag each call with the model name and token counts, which is why the dashcam screenshot up top shows gen_ai.request.model and not just "a request." That tagging is the difference between "something was slow" and "the llama-3-8b call was slow." Then I sent traffic, let about 6% of calls fail on purpose, and set one alert line at "more than 5 errors." Within a minute the service appeared on its own, gauges and all.
Versions, so you can reproduce it: SigNoz v0.133.0, the OpenTelemetry Python packages at 0.65b0. Every screenshot above is from that real, running system, not a marketing page. If your engineers say this is a huge lift, the honest version is: installing the dashboard is an afternoon; the payoff is every afternoon after that.
The takeaway, if you remember nothing else
"Observability" is a bad word for a simple promise: when your AI does something surprising, you get to know why.
You do not have to read the gauges yourself. But you should know they exist, ask your team whether they are switched on for your AI features, and stop accepting "it's a black box" as an answer. Because it isn't one, or it doesn't have to be. You would never drive blindfolded. Don't ship your AI that way either.
The screenshots here are from SigNoz, self-hosted, with a small OpenTelemetry-instrumented demo. If you want to see the dashboard for yourself, signoz.io and opentelemetry.io are the two names to start with.


Top comments (0)