Chapter 2. Distributed tracing architecture