Part 2 8 chapters

The signals

Traces, metrics, logs, baggage, context propagation across Kafka, profiling, and the semantic conventions that keep them all readable โ€” one signal per chapter, three stacks each.

Chapter 8

Traces: auto-instrumentation

One POST /orders request, three ways to get its first end-to-end trace with zero application code: a Java agent, a build-time extension, and a zero-code launcher.

Read โ†’
Chapter 9

Traces: manual spans

Wrapping the inventory and payment retry loops in spans of their own โ€” the attempt count, the failure reason, and the business status auto-instrumentation can't see.

Read โ†’
Chapter 10

Metrics

A custom orders_placed_total counter and a fulfillment-duration histogram, two bridge mechanisms getting them from Micrometer to OTLP, and the exemplar that links a histogram bucket straight to its trace.

Read โ†’
Chapter 11

Logs

Structured logs carrying trace_id and span_id into Loki, and the one resource attribute all four signals must agree on for correlation to work.

Read โ†’
Chapter 12

Baggage

Propagating business context such as cart.id across service boundaries with W3C Baggage, reading it back as a span attribute, and the cardinality cost of getting that wrong.

Read โ†’
Chapter 13

Context propagation across Kafka

Why auto-instrumentation does not reliably carry W3C trace context across a Kafka hop, and the PROPAGATE_KAFKA_CONTEXT toggle that contrasts a continued trace against a broken one.

Read โ†’
Chapter 14

Profiling

Continuous profiling as a runtime signal: attaching the Grafana Pyroscope agent or SDK in each stack, the Quarkus LogManager ordering gotcha, and where OTLP profiles fit in.

Read โ†’
Chapter 15

Semantic conventions

Resource attributes, HTTP/DB/messaging conventions, and why consistent naming is what makes traces, metrics, logs, and profiles correlate at all.

Read โ†’