Overview
A reference setup showing how to take a Node.js service from a Dockerfile to a fully observable production workload on Kubernetes. Helm packages the deploy; Prometheus scrapes metrics; Grafana dashboards visualise them; Jaeger and Zipkin collect distributed traces via OpenTracing. The intent is a working example you can fork and adapt, not a turnkey product.
Why it exists
Built as a learning template
The repo intentionally over-instruments a tiny Node.js service so every observability pillar (metrics, traces, logs) has a working, copy-pastable example. The Helm chart is broken into individual templates so each piece is easy to read in isolation.
Why both Jaeger and Zipkin
OpenTracing (now OpenTelemetry) lets you swap trace exporters without touching the application code. Wiring both backends in parallel demonstrates that the instrumentation is exporter-agnostic — a useful property in real deployments where the choice of tracing backend often comes later.