Observability made painless: Go, Otel & LGTM stack
summary
Shows how a Go web service is instrumented end-to-end with OpenTelemetry, exporting traces, metrics and structured logs to an OTEL collector (local Docker compose) and visualising them in Grafana with traces (HTTP, Postgres, Redis) and structured slog output. Uses the LGTM stack and an OTEL/alloy collector to convert OTLP into LGTM (Loki, Grafana, Tempo, Mimir) formats, demonstrates exemplars link metrics to traces, explains head‑ vs tail‑sampling, and proves the one‑line auto‑instrumentation libraries and Docker setup actually produce correlated traces, logs and metrics.
AI-written summary · about
chapters (17)
- 0:00Introduction
- 2:50Why observability matters
- 7:21Logs, traces, metrics
- 13:23Why distributed tracing
- 17:16Instrumenting Go with OpenTelemetry
- 22:14Spans and trace context
- 30:02Metrics types in OpenTelemetry
- 39:27Structured logging with OpenTelemetry
- 44:20OpenTelemetry resources and conventions
- 46:04LGTM stack: Loki, Grafana, Tempo, Mimir
- 50:13Correlating observability signals
- 50:35Q&A: OpenTelemetry overhead
- 52:22Q&A: Prometheus and Jaeger with OpenTelemetry
- 53:25Q&A: Too many metrics/logs
- 54:49Q&A: Trace IDs vs correlation IDs
- 55:53Q&A: Trace IDs in monoliths
- 57:36Q&A: Tracing user journeys
related talks
19mInstrumenting Go Apps With OpenTelemetry
34mOpenTelemetry for Dummies: Instrumenting Go Apps
50mGuide to Observability with OpenTelemetry
17mOpenTelemetry Looks Good To Me: Loki, Grafana, Tempo, Mimir
35mOpenTelemetry for Busy People
40mInstrumenting GO Applications
55mCloud-Native Observability with OpenTelemetry
13mArchitecting an open observability stack
