This chapter covers
- Using Spring Cloud Sleuth to inject tracing information into service calls
- Using log aggregation to see logs for distributed transactions
- Transforming, searching, analyzing, and visualizing log data in real time
- Understanding a user transaction as it flows across multiple service classes
- Customizing tracing information with Spring Cloud Sleuth and Zipkin
The microservices architecture is a powerful design paradigm for breaking down complex monolithic software systems into smaller, more manageable pieces. These pieces can be built and deployed independently of each other; however, this flexibility comes at a price—complexity.
Because microservices are distributed by nature, trying to debug where a problem occurs can be maddening. The distributed nature of the services means that we need to trace one or more transactions across multiple services, physical machines, and different data stores, and then try to piece together what exactly is going on. This chapter lays out several techniques and technologies for using distributed debugging. In this chapter, we look at the following: