Adding observability to an infrastructure stack
Start with the decisions operators need to make, then design signals, ownership, and cost controls that remain useful under stress.
Adding an agent, collector, and a set of dashboards does not automatically make a system observable. It makes telemetry available.
Observability becomes useful when an engineer can use that telemetry to answer questions about the system—especially questions nobody predicted while building the dashboard.
The work begins with operational decisions, not with the list of integrations a vendor supports.
Define what operators must know
Start with the system’s important user and engineering outcomes. For an API, those might include successful requests, response time, correctness, and the ability to absorb expected load. For a data pipeline, freshness and completeness may matter more than request latency.
Then ask what an operator must decide when each outcome degrades:
- Is the problem isolated or widespread?
- Which dependency or recent change is involved?
- Is the system failing, slowing down, or producing incorrect results?
- Is there a safe mitigation?
- How will we know that recovery worked?
These questions shape the signals worth collecting. They also expose where telemetry alone is insufficient because ownership, deployment metadata, or architectural context is missing.
Establish a small set of service-level signals
Begin with signals tied to externally meaningful behavior. Request rate, errors, and latency are common because they describe many online systems, but they are not a universal template.
Choose service-level indicators that can be computed consistently and explain what each excludes. A latency measure without its population is ambiguous. An error rate that ignores timeouts at the load balancer can report health while users see failure.
If objectives are appropriate, use them to express the acceptable level of reliability and to guide alerting. Avoid creating an objective simply because the monitoring platform supports one. Someone must be prepared to use the result when making release, reliability, and investment decisions.
Give metrics, logs, and traces distinct jobs
Each telemetry type is useful at a different stage of investigation.
- Metrics summarize behavior efficiently and expose change over time.
- Logs preserve discrete events and domain-specific detail.
- Traces connect work across components and reveal where time and failure propagate.
Collecting all three for everything at maximum detail is rarely necessary or affordable. The goal is to make them complement one another.
A high-level alert might begin with a service metric. A trace identifies the dependency where latency accumulated. A structured log explains why a particular operation failed. Shared service, environment, version, and request identifiers allow an engineer to move between those views.
Standardize context early
Telemetry without consistent attributes becomes difficult to aggregate and expensive to repair.
Define a small resource model for service name, environment, region, version, ownership, and other dimensions that genuinely matter. Document which values are controlled and where they originate. Avoid placing unbounded identifiers such as user IDs or raw URLs into metric labels.
Cardinality problems often emerge gradually. A new label appears harmless in development and creates millions of time series in production. Review attribute changes with the same care as a schema change.
Design alerts around action
An alert should identify a condition that needs timely human attention and provide a useful first step. Dashboards and anomaly views can be valuable without paging anyone.
For each page, write down:
- the user or system impact it represents;
- the owner expected to respond;
- the urgency and why waiting is unsafe;
- the first evidence or runbook the responder needs;
- the condition that indicates recovery.
Prefer alerts on sustained symptoms over transient internal causes. Cause-based alerts are useful when the cause itself requires action, but they tend to multiply as architecture changes.
Review alert quality using incident data. A page that is always ignored is not harmless—it trains responders to distrust the channel.
Connect telemetry to change
Deployments, configuration changes, feature flags, and infrastructure events are part of the operational picture. Put change markers where engineers investigate symptoms and make the underlying record easy to open.
This does not prove causation. It shortens the path from “something changed” to a testable hypothesis. The distinction matters: observability should help engineers reason, not decorate a guess with a deployment timestamp.
Control cost at collection time
Telemetry cost is an architectural concern. Retention changes and vendor negotiations help, but the largest leverage often comes from deciding what should be produced and transported.
Useful controls include:
- dropping debug or low-value events before ingestion;
- sampling high-volume successful traces while preserving errors and unusual latency;
- aggregating repeated measurements;
- routing security, audit, and operational data to different retention policies;
- removing attributes that are unused or dangerously high-cardinality;
- assigning ownership for the most expensive sources.
Sampling policy should be explicit. An aggressive rule that destroys rare failure evidence is not an optimization. Measure the effect on investigations as well as the invoice.
Make ownership visible
Instrumentation ages with the system. Services are renamed, alerts outlive their responders, and dashboards continue to display queries nobody trusts.
Every production signal should have an identifiable owner. Standardize the common mechanics, but keep service teams responsible for the meaning of their telemetry. Platform teams can provide libraries, collectors, attribute rules, cost controls, and paved paths; they cannot define every service’s correct behavior from the outside.
Include observability in service reviews and change processes. A new dependency, failure mode, or critical background job may require new signals before it reaches production.
Test the investigation path
Do not wait for a real outage to discover that trace propagation stops at the queue, a dashboard filters the wrong region, or the on-call role cannot access the logs.
Exercise representative failures. Follow the same links and permissions a responder would use. Check whether the evidence supports a decision, whether recovery is visible, and whether the telemetry remains available when a dependency is unhealthy.
An observable infrastructure stack is not the one producing the most data. It is the one that lets engineers form and test useful explanations quickly—without requiring a separate investigation to understand the monitoring system itself.