Articles

What Is Observability? Logs, Metrics, and Traces

Observability is the ability to understand a system's internal state from its external outputs — built from logs, metrics, and traces working together.

Chisato Chisato · · 4 min read
Abstract illustration representing DevOps and infrastructure

Observability is the ability to understand what’s happening inside a system by examining the data it produces externally — without having to ship new code to ask a new question. It’s usually built from three kinds of telemetry working together: logs, metrics, and traces. The term gets used loosely as a synonym for “monitoring,” but the distinction matters: monitoring tells you that something is wrong against dashboards you set up in advance, while observability is meant to let you figure out why, for problems you never anticipated.

Monitoring vs observability

Monitoring, in the traditional sense, is built around known failure modes: you decide in advance what to watch — CPU usage, error rate, request latency — and set alerts on thresholds. It answers questions you thought to ask ahead of time.

Observability is a broader property of the system: enough rich, correlated telemetry is captured that you can explore an unanticipated problem after the fact, forming new questions as you go, rather than being limited to the dashboards someone built in advance. The practical difference shows up during an incident — a well-monitored system tells you a dashboard turned red; an observable system lets you drill from “error rate spiked” down to the specific request, the specific service, and the specific line of code, even if nobody built a dashboard for that exact failure mode beforehand.

The three pillars

Logs are discrete, timestamped records of individual events — a request came in, a job failed, a value changed. They’re the most granular signal and the closest to raw ground truth, but at scale they’re also the most expensive to store and search, and reading through raw logs to find a pattern is slow without good structure. Structured logging — emitting logs as consistent key-value data rather than free-form text — makes them far more useful for automated analysis and correlation.

Metrics are numeric measurements aggregated over time — request count, p99 latency, memory usage, error rate. They’re cheap to store and fast to query because they’re already aggregated, which makes them ideal for dashboards and alerting thresholds. What they lose in that aggregation is per-event detail: a metric can tell you the error rate spiked, not which specific request caused it or why.

Traces follow a single request as it moves through a distributed system, recording how long it spent in each service and where time was lost. In a microservices architecture, a single user action might touch a dozen services; a trace stitches those dozen spans together into one timeline, which is often the only way to see that a slow user-facing response is actually caused by a single slow downstream call three services deep.

No single pillar is sufficient on its own. Metrics tell you something is wrong and roughly when. Traces show you where in the request path the time went. Logs give you the specific detail — the exact error message, the exact input — once you’ve narrowed down where to look.

Where observability data comes from

Modern observability increasingly standardizes on common instrumentation rather than each vendor requiring its own agent and format, which matters because it decouples how you instrument code from where the data ends up. Instrumentation can also happen at a lower level than application code: eBPF makes it possible to capture detailed system and network-level telemetry — syscalls, network packets, kernel events — without modifying or redeploying the application at all, which is powerful for observability in environments where instrumenting every service individually isn’t practical.

Why it matters more in distributed systems

Observability became a distinct discipline largely because architectures got harder to reason about. A single monolithic application failing is comparatively easy to debug — the stack trace points at the problem. A request that fails somewhere across a dozen Kubernetes services, behind a load balancer, possibly retried, possibly rate-limited somewhere along the way, doesn’t hand you a single stack trace — it hands you a distributed sequence of events that only traces and correlated logs can reconstruct.

This is also why observability is closely tied to deployment practices. Teams running canary or blue-green deployments depend on good metrics to detect a bad release quickly — the whole point of a canary is comparing the new version’s error rate and latency against the old one in near real time. Without solid observability, a canary deployment is just a guess with extra steps.

Practical starting points

You don’t need every pillar instrumented perfectly on day one. A reasonable order: metrics first (cheap, gives you the earliest warning that something’s wrong), then structured logs (so you can dig into specifics once you know where to look), then distributed tracing (once you have enough services that request paths aren’t obvious from reading code). Platform teams building internal developer platforms often bake this instrumentation in as a default for every service, specifically so individual teams don’t have to rebuild it from scratch each time.

The takeaway

Observability is what lets you answer questions about your system that you didn’t think to ask in advance — built from metrics that tell you something’s wrong, traces that show where, and logs that show exactly what. Monitoring against known thresholds is necessary but not sufficient once a system is distributed across enough services that no one dashboard captures the whole picture. Investing in all three pillars, and in instrumentation that correlates them, pays off precisely during the incidents you didn’t plan for.

Chisato Chisato · · 5 min read

Logs vs Metrics vs Traces: The Three Pillars

Logs, metrics, and traces each answer a different question about a running system — what each captures, and how they work together.

#DevOps #Cloud #Developer Tools
Chisato Chisato · · 4 min read

Monorepo vs Polyrepo: Which Should You Choose

A monorepo holds all projects in one repository; a polyrepo splits them apart. Trade-offs in tooling, ownership, and CI/CD for each approach.

#DevOps #Developer Tools #Cloud