Putting the LGTM stack on my own box: one container, a Java agent and an owner-only Grafana
I added Grafana's all-in-one otel-lgtm image next to this site's Scala/Play backend: an OpenTelemetry Java agent and Traefik send OTLP to it, Keycloak gates Grafana to one email, and the collector strips query strings. Here is the setup, the guardrails, and what the first traces showed.
17 Oct 2026
·
7 min read
·95 views
Auto-instrumenting Spring Batch 6 with OpenTelemetry — four silent failures
Wiring Spring Boot 4 + Spring Batch 6 to emit job/step traces into Tempo and spring_batch_* metrics into Prometheus — and the four config traps that each failed the same way: green build, zero errors, nothing exported.
26 Aug 2026
·
5 min read
·170 views
Metering the agent fleet: cost & metrics for Claude Code subagents
If you distribute a Claude Code agent to a marketplace, every developer who runs it spends your reasoning budget and yours to answer for. Here is how I wired Claude Code's built-in OpenTelemetry into a Grafana/LGTM stack to watch cost, tokens and tool decisions — per run.
19 Jul 2026
·
12 min read
·232 views
An intro to TraceQL: how to actually query traces in Grafana Tempo
TraceQL has a tiny surface area but a few sharp edges. Here is the mental model — span scopes, the spanset, aggregates, and structural operators — that makes it click and stops the silent zero-result queries.
24 Jun 2026
·
6 min read
·674 views
Manual tracing in Spring Boot with OpenTelemetry: @WithSpan, hand-built spans, and the traps in between
Wiring OpenTelemetry into Spring Boot 4 — the annotation way and the manual Tracer way — plus the context model that ties them together and the gotchas that cost me time (a silent @WithSpan, http/protobuf vs gRPC, and Docker's 'is a directory').
23 Jun 2026
·
6 min read
·544 views