This document discusses different ways to instrument software applications for monitoring purposes. It begins with definitions of instrumentation and telemetry. It then discusses the different types of data that can be collected through instrumentation like metrics and events. It describes how to instrument various parts of applications including the frontend like browsers and mobile apps as well as the backend for languages like Java, .NET, Node.js and PHP. It provides best practices for instrumentation and logging. Finally, it discusses challenges with correlating data across distributed systems and some open source options and solutions for transaction correlation.