Welcome to a hands-on workshop where you'll instrument a multi-service application from scratch with OpenTelemetry, and ship metrics, logs and traces into the VictoriaMetrics stack. Roughly 25% talk, 75% keyboard.
Three parallel tracks: Node.js/Express, Python/Flask and Go. Same system, same backend, same exercises — only the SDK surface differs.
This workshop consists of 9 modules that take you from a service emitting nothing at all to one you can debug from telemetry alone. You'll instrument a multi-service system, run an OpenTelemetry Collector as the single ingress point, and query the results in VictoriaMetrics, VictoriaLogs, VictoriaTraces and Grafana:
Every module is written once for all three tracks. Use the track switcher in the navigation bar of any module page to flip the code examples between Node.js, Python and Go — your choice is remembered as you move through the workshop.
What observability means, the three signals it relies on — metrics, logs and traces — and what OpenTelemetry is.
Start the whole stack, your API included, with one Docker Compose command, and check with the doctor script that everything is up and running.
Tour the todo-api you'll be editing all day — its endpoints, its dependencies and its code.
Get all three signals flowing without touching application code.
What the OpenTelemetry Collector is, what it can do, and what this workshop's Collector does to your metrics, logs and traces.
Pick the right instrument, emit business metrics, and meet cardinality before it bites.
Emit structured logs that carry trace context, and query them with LogsQL.
Create custom spans, record errors properly, and propagate context across services and languages.
Cost, sampling, PII and rollout strategy — what changes when this leaves your laptop.
Upon completing all modules, you'll have:
Congratulations! You'll have gained the confidence to instrument your own services deliberately rather than by accident. This knowledge enables you to:
Found an issue, have an improvement idea or want to add more modules? Please open an issue or submit a pull request!