Observability Stack Implementation
Enough signal to answer a question you did not anticipate. Metrics, logs and traces joined by a common identifier, with the cost of collection under deliberate control.
- Who
- Delivered by a senior team assembled for the engagement, against a defined scope.
What you're seeing
- An incident is investigated by reading logs in three tabs.
- Usually means The signals are not correlated. Every investigation is three separate searches run under time pressure, and the join between them is happening in someone's head.
- The observability bill grew and nobody changed a setting.
- Usually means Cardinality. One unbounded label — a user id, a request id, a customer name attached to a metric — multiplies a time series into millions without anyone touching a configuration file.
- Alerts fire on CPU and disk and nobody acts on them.
- Usually means Alerting is on causes rather than symptoms. High CPU is not a problem; a failing checkout is. Cause-based alerts produce noise and train the rotation to dismiss.
- Answering a new question about behaviour requires shipping code.
- Usually means The system is monitored but not observable. Monitoring answers questions someone predicted; observability is being able to ask one nobody anticipated.
Three signals, one identifier
Metrics say something changed. Traces say where. Logs say what.
Without a shared identifier joining them, an incident becomes three separate investigations run in parallel under time pressure, with the join happening in the head of whoever is on call. That works when the person investigating built the system. It fails exactly when it matters most — an unfamiliar service, an unfamiliar failure, someone new on the rotation.
Propagating a trace identifier through logs and exposing it on metrics is not a large piece of work. It is the difference between a graph leading to a request and a request leading to a line of code, and the alternative to doing it is doing the join manually every time.
Alert on symptoms
An alert should mean a person must act now.
Cause-based alerting produces a rotation that dismisses pages, and it does that regardless of whether the underlying conditions are real. High CPU, elevated memory, a queue that is longer than usual — all are frequently normal, and all are frequently the leading edge of nothing at all.
Symptom-based alerting is narrower and it works: the checkout success rate has dropped, the API is returning errors to a customer, latency on the path that matters has crossed the threshold. Each of those has a runbook, because an alert whose response has to be invented at three in the morning is an alert that will be handled badly.
Cost is a design decision
Observability spend grows silently and arrives at a number nobody approved.
The mechanism is almost always cardinality. A label that looked useful — user id, request id, customer name — turns one time series into as many as there are distinct values, and the storage and query cost follows. No configuration changed; the traffic pattern did.
So sampling rates, retention tiers per signal and a cardinality cap are set deliberately at the start rather than after the first alarming invoice. This is also the point at which somebody has to decide what is worth keeping for a year and what is worth keeping for a week, which is a useful conversation independent of the bill.
Where it sits
This capability sits under Platform Engineering, where instrumentation is what makes everything else in the practice possible, and under Engineering Velocity, where it supplies the failure-rate and recovery-time halves of the delivery picture.
It is the foundation two neighbours stand on. On-Call & Incident Response is a rotation of people being woken with no information unless this exists first. And SRE & SLO Design requires a measured indicator before a target means anything — you cannot set an objective for something you are not measuring where the user is.
How the work runs
-
Instrument the paths that carry the business
Starting from the flows that matter commercially rather than from what the agent collects by default.
-
Correlate the three signals
A trace identifier through logs and metrics so a graph leads to a request and a request leads to a line of code, without three separate searches.
-
Alert on symptoms, not causes
Pages tied to what a user experiences. Alerting on CPU produces noise; alerting on the checkout failing produces action.
-
Control the cost
Sampling, retention tiers and cardinality limits set deliberately, because observability spend grows silently and reaches a number nobody approved.
What arrives
- OpenTelemetry instrumentation across the critical paths
- Dashboards for on-call and a separate set for service owners
- Alert rules tied to user-visible symptoms, each with a runbook link
- A cost model with sampling and retention set per signal
What it costs your team
Around four hours a week from a platform engineer during instrumentation.
How we decide
Instrumentation starts from the paths that carry the business
Costs It leaves parts of the system less instrumented than a uniform rollout would.
Default agent collection produces enormous volume weighted toward whatever is easiest to collect, which is rarely what a commercial incident is about. Starting from sign-up, checkout and the API enterprise customers depend on means the first useful investigation happens sooner and the bill stays proportionate to the value.
OpenTelemetry regardless of the backend
Costs It is slightly more setup than a vendor's own agent, which is designed to be effortless.
The instrumentation is the expensive, long-lived asset and the vendor is the reversible decision. Instrumenting with a proprietary agent inverts that — it makes the cheap decision permanent, and re-instrumenting a whole estate to change vendor is the reason organisations stay on a bill they have outgrown.
Alerts fire on symptoms, and every one has a runbook
Costs It means deleting alerts that fire on genuinely real conditions.
A page should mean a person must act now. Anything else belongs on a dashboard and is looked at deliberately. An alert with no runbook is an alert whose response is being invented at three in the morning by whoever is least equipped to invent it, and an alert nobody acts on trains the rotation to dismiss the one that mattered.
Where this has run
Frequently Asked Questions
Sources
- OpenTelemetry — documentationopentelemetry.io
- Google — Site Reliability Engineeringsre.google
- Google — Implementing SLOssre.google
- Cloud Native Computing Foundationcncf.io
Page reviewed

