Building an Observability Platform That Doesn't Break the Bank
The design choices that made our observability stack materially cheaper without turning it into a fragile science project no one wanted to own.

Joel Wembo
@joelwembo
Founder and CEO at vxcloud. Focused on cloud infrastructure, DevOps systems, and practical AI for operators.
A dark monitoring dashboard displayed on a laptop.
Photo: Neil Fernandez / UnsplashObservability cost becomes an architecture problem surprisingly fast
When teams complain that observability is expensive, they are usually reacting to a bill. The underlying issue is architectural. If you collect every signal at full fidelity, retain it all in the same expensive tier, and query it through one premium path, cost growth becomes inevitable.
The challenge is to reduce cost without making the platform so fragile that engineers stop trusting it.
That balance guided every major design decision in our stack.
We designed around different lifecycles for metrics, logs, and traces
The easiest way to overspend is to treat all telemetry as if it has the same value profile. It does not.
Metrics support dashboards, alerting, and trend analysis. Traces are invaluable for understanding request behavior but are often most useful for narrower windows. Logs range from critical audit and incident evidence to low-value noise generated by verbose defaults.
Once we acknowledged those differences, the storage model became clearer:
- Keep high-value, fast-access data in shorter hot windows
- Tier older or lower-value data into cheaper object storage
- Sample or downscope signals whose marginal value is low
This made the platform economically defensible without turning it into a black box.
Collection architecture mattered more than backend selection
OpenTelemetry gave us a consistent instrumentation story, but the real leverage came from how we shaped traffic before it hit storage.
We leaned on collectors to:
- Normalize metadata early
- Drop or reduce low-value spans and logs
- Route signals to the right storage path
- Apply policy consistently across languages and runtimes
This helped keep the backends cleaner and made it easier to evolve the system over time. It also created a useful operational choke point for debugging telemetry quality.
Sampling only works when you are honest about what you need
Teams often resist sampling because they imagine a future incident where the missing trace would have solved everything. That concern is understandable. It is also incomplete.
The better question is which data must be preserved at high fidelity and which data can be represented statistically without harming decision quality.
Our posture is:
- Keep errors and rare failure paths at high fidelity
- Keep service-level latency signals intact
- Sample healthy, repetitive success traffic aggressively where appropriate
- Preserve raw depth temporarily during major incidents or launches
This lets us spend detail where it matters instead of paying premium rates for endless healthy traffic that nobody will inspect.
Unified correlation mattered more than a fancy UI
Engineers do not want three beautiful tools that cannot explain the same event together. They want a reliable way to move from alert to service to trace to log line without losing context.
We invested heavily in consistent metadata, trace IDs in logs, service naming discipline, and dashboard conventions. Those moves sound less exciting than choosing a backend, but they are what make the platform feel coherent to the people using it.
Correlation is the real user experience of observability.
Platform ownership had to stay realistic
An open-source observability stack only pays off if the organization can actually operate it. We kept the design intentionally conservative:
- Fewer moving parts where possible
- Strong defaults for dashboards and alerts
- Object storage for retention instead of forcing everything into expensive hot systems
- Clear SLOs for the observability platform itself
That last point matters. If your monitoring platform is unreliable, teams overcompensate with duplicate tooling, manual exports, or over-retention. Reliability discipline is part of cost control.
Cost control became easier once teams could see telemetry economics
We started exposing simple usage views by team and service:
- Top log producers
- Most expensive trace emitters
- Services with unusually high-cardinality labels
- Retention tier consumption over time
That visibility changed behavior quickly. Teams removed noisy debug logs, normalized labels, and thought harder about what they emitted because the economics were finally visible.
Cheap observability is not the goal. Sustainable observability is.
The success condition is not merely paying less than a commercial vendor quote. The success condition is having a platform that engineers trust, leaders can justify, and operators can evolve without fear.
For us, the winning principles were:
- Separate telemetry by value and lifecycle
- Shape data before storage
- Sample intentionally, not emotionally
- Make correlation first-class
- Show teams the economics of their telemetry choices
That combination cut cost. More importantly, it gave us an observability model that still feels operationally sane as the platform grows.