Step 7 — Seeing what happens
Metrics, health and traces, and reading them when something is wrong.
Run it
One command, whichever language you came for. The image carries the
toolchain, the library and RabbitMQ; the management UI is on http://localhost:15672 (guest/guest)
while it runs, and --keep holds it open afterwards.
docker run --rm -p 15672:15672 ghcr.io/acemq-company/acemq-tutorials-java:0.7.15 step 7
docker run --rm -p 15672:15672 ghcr.io/acemq-company/acemq-tutorials-python:0.7.12 step 7
docker run --rm -p 15672:15672 ghcr.io/acemq-company/acemq-tutorials-ruby:0.7.14 step 7
docker run --rm -p 15672:15672 ghcr.io/acemq-company/acemq-tutorials-dotnet:0.7.13 step 7
docker run --rm -p 15672:15672 ghcr.io/acemq-company/acemq-tutorials-go:0.9.9 step 7Side by side
| Java | Python | Ruby | .NET | Go | |
|---|---|---|---|---|---|
| Example | 03-telemetry |
03-metrics-and-health04-tracing |
03-observability |
09-telemetry-csharp |
02-metrics-and-health06-tracing |
| Tutorial: observability | Java | Python | Ruby | .NET | Go |
| Observability | Java | Python | Ruby | .NET | Go |
Java
acemq-java-amqp 0.7.15, acemq-java-amqp-examples
examples-v0.7.15.
intermediate/03-telemetry
An order takes nine seconds. Without propagation that shows up as four unrelated one-second spans in four services, and five seconds nobody can account for. With it, one trace explains the whole thing.
Python
acemq-python-amqp 0.7.12, acemq-python-amqp-examples
examples-v0.7.12.
advanced/03-metrics-and-health
/acemq-metrics, /acemq-health and
/acemq-info, on the same paths as Java, Go and .NET.
advanced/04-tracing
A consumer's span joined to the publish that caused it, minutes and processes apart.
Ruby
acemq-ruby-amqp 0.7.14, acemq-ruby-amqp-examples
examples-v0.7.14.
advanced/03-observability
The three questions somebody asks about a running service, and where each answer comes from: how much is moving, whether it is working, and which message it was.
.NET
acemq-dotnet-amqp 0.7.13, acemq-dotnet-amqp-examples
examples-v0.7.13.
intermediate/09-telemetry-csharp
An order is placed, a handler ships it by publishing again, and a second handler hears about the shipment. Four operations and two trips through the broker land in one trace — and then the same traffic is scraped as Prometheus metrics, over HTTP, and checked against what actually happened.
Go
acemq-go-amqp 0.9.9, acemq-go-amqp-examples
examples-v0.9.9.
advanced/02-metrics-and-health
A consumer handles twenty events and rejects four of them, while the
actuator package serves what happened over HTTP:
/acemq-health for a probe, /acemq-info for
what is running, and /acemq-metrics for Prometheus. The
paths are the same as in the Java and .NET libraries, so a scrape
configuration or a probe written for one works against the others.
advanced/06-tracing
A consumer's span is a child of the publish that caused it, and the parent came off the message rather than out of ambient context.