Modern Observability: Well Beyond Simple Monitoring
Logs, metrics, and traces are necessary but not sufficient. How OpenTelemetry, SLO-driven alerting, and disciplined instrumentation turn telemetry into the ability to understand production systems.
José DA COSTA January 6, 2026 3 min read
Traditional monitoring answers the question 'is it working?'. Observability answers 'why is it not working?' — including for failure modes nobody predicted when the dashboards were built. In distributed systems, where a single user request may traverse dozens of components, that distinction is the difference between minutes and hours of incident resolution.
The three pillars, and their limits
Logs, metrics, and traces each answer different questions: metrics tell you that something changed, traces tell you where in the request path, logs tell you what happened at that point. The classic failure is collecting all three in separate tools with no shared context, forcing engineers to correlate by timestamp and intuition at 3 a.m. The value emerges from correlation — trace identifiers propagated into logs, metrics linked to exemplar traces — so that navigation from symptom to cause is a series of clicks, not an archaeology project.
OpenTelemetry has become the CNCF-backed standard for generating and collecting telemetry, with stable SDKs across major languages. Its strategic significance is the decoupling it creates: instrument applications once with a vendor-neutral API, then route data — through the OpenTelemetry Collector — to whichever backends suit you today, keeping the freedom to change tomorrow. Instrumentation is woven through application code and is expensive to redo; standardizing on OpenTelemetry is how you avoid paying for it twice.
Semantic conventions — consistent naming for services, operations, and attributes — matter more than they appear. They are what make telemetry queryable across dozens of services built by different teams over different years.
Alert on symptoms, steer with SLOs
Mature observability changes what wakes people up. Instead of alerting on every resource threshold — CPU, memory, queue depth — define service-level objectives on what users actually experience: availability, latency, error rate. Alert when the error budget burns abnormally fast, and let cause-level signals inform diagnosis rather than trigger pages. Teams that make this shift report fewer, more meaningful alerts — and the on-call rotation stops being a burnout machine.
This is also the honest response to alert fatigue: an alert that does not require a decision should be a dashboard line or a ticket, not a page. Every page should be actionable, and every recurring page should generate either a fix or a revised threshold.
Control the cost of knowing
Telemetry volume grows faster than the systems it describes, and observability bills can rival the infrastructure they observe. Sampling strategies for traces, retention tiers by data value, and dropping high-cardinality attributes that answer no actual question are engineering decisions, not afterthoughts. The goal is not to store everything; it is to be able to answer the questions that matter within seconds.
A pragmatic adoption path
Start with the services on the critical user path. Instrument them with OpenTelemetry, propagate trace context end to end, define two or three SLOs that reflect real user experience, and rework alerting around them. Then run incident reviews that ask not only 'what broke?' but 'how quickly could we see it, and what would have made it faster?'. Observability is ultimately a feedback loop on your own understanding of the system — and the systems we understand are the ones we can operate with confidence.
Founder and president of ACCENSEO, software engineer. He works directly with clients on software architecture, cloud infrastructure, and custom development.