As our systems grow, so does our software architecture complexity. As we scale and add more and more components, the interactions occurring between them become very complex and we start to lose visibility into the system. Traditional monitoring tools such as metrics and distributed logging still have their place, but they often fail to provide visibility across services. This is where distributed tracing thrives. During the talk we’ll explore what distributed tracing is, what open tools we can use to facilitate it and some lessons learned while implementing distributed tracing at Uber and how it helps us build big and impactful systems.