Self-Hosted Observability on Hetzner
Overview
Section titled “Overview”Our monitoring setup had grown fragmented: a mix of free-tier SaaS dashboards plus limited commercial plans. We needed a professional-grade, unified observability stack without ongoing licensing costs.
I consolidated everything into a self-hosted stack on a dedicated Hetzner server.
Server Preparation
Section titled “Server Preparation”- Hardened Ubuntu host (automatic security updates,
ufwfirewall, fail2ban, SSH key auth only). - Partitioned storage for metrics/retention.
- Docker + systemd units for reproducibility.
Stack Components
Section titled “Stack Components”- Sentry — Centralized application error tracking.
- Prometheus — Metrics scraping, service discovery, alert rules.
- Grafana — Visualization dashboards, alert routing.
- Tempo — Distributed tracing with Jaeger/OTel integration.
Architecture
Section titled “Architecture”[Apps] → [OpenTelemetry SDKs] → [Prometheus + Tempo] ↘ [Sentry] [Grafana]
Results
Section titled “Results”- Unified observability: errors, metrics, traces in one place.
- Reliability: local alerts + Slack notifications.
- Scalability: server sized to handle projected growth.