‹ Juan Valentin Alducin Writing
DockerObservabilityCost

A zero-cost local observability stack with Docker Compose

2026-06-14 · 4 min read

I used to run my monitoring stack on an always-on t3.micro. It worked — until the bill reminded me that "free tier" stops being free once you add a couple of public IPv4 addresses. The fix wasn't a bigger instance; it was moving the stack to local Docker Compose and spinning it up only when I need it.

Why local first

The shape of it

Three services, one network, persistent volumes:

services:
  grafana:    # dashboards + alerts
  postgres:   # metrics + app data (volume)
  n8n:        # scheduled collection / ETL

Grafana talks to PostgreSQL as a datasource; n8n runs the scheduled pulls (CloudWatch → normalize → insert). Everything is declared, nothing is hand-clicked.

Lessons that kept it cheap and stable

Cloud is a deployment target, not a place your dev loop has to live.

Takeaway

For side projects and portfolios, "always-on in the cloud" is a tax you don't need to pay. Containerize it, run it locally, and promote to the cloud only when something actually needs to be public.

Written by Juan Valentin Alducin Vázquez · Get in touch ›