Drowning in Data: How the Pursuit of Total Observability Blinds Engineering Teams to What Actually Matters
There is a particular kind of confidence that comes from watching log lines scroll across a terminal. It feels like oversight. It feels like control. For a generation of engineers who built systems atop the mantra that you cannot manage what you cannot measure, comprehensive logging became something close to a moral imperative. If something was happening inside a service, there should be a record of it — timestamped, structured, and shipped to a centralized store within milliseconds.
The result, in most production environments today, is terabytes of log data accumulating daily across distributed systems that nobody is reading, queried only when something has already gone wrong, and searched with tools that struggle to surface meaningful patterns from the noise. The very infrastructure built to illuminate system behavior has, in many organizations, become its own form of darkness.
The Logging Maximalism Problem
The instinct toward comprehensive logging is not irrational. It emerges from hard experience. Engineers who have spent hours debugging a production incident without adequate context learn quickly that the absence of data is its own liability. The natural correction is to instrument more aggressively — to capture request payloads, response codes, execution times, dependency calls, retry counts, and anything else that might later prove relevant.
But logging maximalism carries costs that are rarely accounted for during the instrumentation phase. Storage expenses scale with data volume in ways that compound quickly. Query latency increases as log indexes grow. Alert fatigue sets in when dashboards surface hundreds of anomalies per hour, most of them irrelevant. And perhaps most critically, the cognitive load of operating within a high-noise environment degrades the pattern recognition that experienced engineers rely on during incident response.
When every action a system takes is recorded with equal weight, nothing is prioritized. The exception that precedes a cascading failure sits alongside thousands of routine INFO-level entries. Finding it requires knowing what to look for before you know what went wrong — which is precisely the situation observability is supposed to prevent.
Signal Degradation at Scale
Consider a mid-sized e-commerce platform running on a microservices architecture across several AWS regions. Each service emits structured logs to a centralized aggregation layer. During peak traffic — Black Friday, for instance — log ingestion rates spike dramatically. Engineers monitoring system health are not looking at raw logs; they are looking at dashboards that summarize log-derived metrics. Those dashboards are built on queries that were written during calmer periods, optimized for normal operating conditions.
When an unusual failure mode emerges — one that does not match existing alert thresholds — the raw evidence is almost certainly present somewhere in the log store. But finding it in real time, amid the volume of a high-traffic event, is operationally impractical. The data exists. The visibility does not. This distinction is the observability trap in its clearest form.
The problem is not unique to e-commerce. Financial services platforms, healthcare data pipelines, and SaaS infrastructure teams across the United States have encountered variations of the same dynamic: systems that are extensively instrumented yet functionally opaque during the moments that matter most.
Why Less Can Genuinely Mean More
A growing body of practice within the site reliability engineering community has begun to challenge the assumption that comprehensive logging is synonymous with good observability. The alternative framework centers on intentionality — logging what is meaningful rather than what is possible.
This approach begins with a clear definition of what constitutes a signal worth capturing. Not every function call, but the transitions between states that indicate system health or degradation. Not every HTTP request, but the requests that cross latency thresholds or return unexpected status codes. The goal is a log corpus that an engineer can reasonably scan, that alerts can be built against with precision, and that remains queryable under load.
Some teams have adopted structured event logging as a partial solution. Rather than emitting a high volume of granular log lines, they emit fewer, richer events that encode meaningful context at key system boundaries. A single event might capture the outcome of a user authentication flow — including relevant metadata about the session, the device, and the result — rather than dozens of individual lines tracing each step of the process. This compression reduces volume without sacrificing the contextual depth that makes post-incident analysis useful.
The Metrics and Traces Complement
Observability in mature engineering organizations is rarely built on logging alone. The three-pillar model — logs, metrics, and distributed traces — has become a standard reference point, and for good reason. Each pillar serves a distinct purpose that the others cannot fully replicate.
Metrics excel at surfacing aggregate trends over time. A spike in error rate or a sustained increase in p99 latency is far more legible as a time-series graph than as a pattern buried in log output. Traces, meanwhile, provide the request-level context that logs often approximate poorly — showing exactly how a single transaction propagated across services, where time was spent, and where failures originated.
When teams over-invest in logging at the expense of metrics and tracing infrastructure, they often end up with the worst of both worlds: high storage costs, poor query performance, and gaps in the causal visibility that traces provide. A more balanced investment frequently yields better operational outcomes at lower cost.
Rethinking the Observability Mandate
None of this is an argument against logging. It is an argument against logging as a substitute for deliberate observability design. The distinction matters because the two activities require different skills, different conversations, and different organizational commitments.
Designing for observability means asking, before a system is built, what failure modes are most consequential and what data would be necessary to diagnose them. It means establishing retention policies that reflect the actual value of data over time — most log data loses diagnostic value within days, yet organizations routinely retain it for months. It means building alert logic that responds to meaningful conditions rather than raw volume thresholds.
Perhaps most importantly, it means resisting the cultural pressure to equate data accumulation with operational maturity. Collecting everything is easy. Knowing what to collect, when to surface it, and how to act on it is the harder discipline — and the one that actually keeps systems running.
Toward a More Disciplined Practice
The engineering teams that navigate this challenge most effectively tend to share a few common practices. They conduct regular reviews of their logging infrastructure, asking which log sources are actively used in incident response and which are never queried. They treat log verbosity as a tunable parameter, adjusting instrumentation levels based on operational context rather than leaving defaults in place indefinitely. And they invest in making their metrics and tracing layers robust enough to carry the observability weight that logging alone cannot bear.
The goal, ultimately, is not to see everything. It is to see the right things at the right time with enough context to act. That goal is rarely served by maximalism. It is served by discipline — the same discipline that distinguishes well-architected systems from those that merely appear to be under control.