Metrics, logs, and traces are often called the "three pillars of observability", a term that does not do justice to each tool individually, or in combination, and makes many software organizations inclined to check all three boxes, sometimes by using three different vendors, without getting any better observability for their systems.
In this chapter, we discussed how metrics and logs lack the investigative and debugging power when applied to distributed systems because in their standard forms, they are not aware of the distributed request context and cannot provide a narrative for a single execution. I showed how combining these tools with context propagation and tracing enhances their ability to explain system behavior.
I used a simple Hello application to demonstrate these integrations in practice and we applied techniques that we first discussed in Chapter 10, Distributed Context Propagation, such as using the OpenTracing baggage (a form of context propagation) to pass around fault...