Chapter 11. Implementing Observability in Java

In this chapter, you will see how to apply the principles and ideas of the last chapter to real, production Java/JVM systems. This will include the three pillars of metrics, traces, and logs.

We will use three primary technologies for our examples—​Micrometer, Prometheus, and OpenTelemetry. However, it should be clearly understood that these technologies have different domains of applicability, and in practice, many real systems will use some or all of them together to provide a complete observability implementation.

There are also many other technologies in use in the field, with varying levels of maturity—​in fact, one of the difficult problems in observability is managing the complexity of possible deployments.

A second, and related problem: observability is, by design, intended to be used to understand complex software systems and varied architectures. This means that, while there is an emerging set of patterns, there is no single “right” way to implement observability—​the best solution for a particular software system depends on the details.

In this chapter, we’ll be using Fighting Animals, from Chapter 8, as our example application.

Warning

The architectural choices we make for observing Fighting Animals are not necessarily the best choices for other applications—​a lot depends upon the details of the application architecture and the environment in which it is deployed.

Let’s start looking at the Micrometer library to see ...

Get Optimizing Cloud Native Java, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.