You install a small instrumentation package in your application, and set up an Application Insights resource in the Microsoft Azure portal. The instrumentation monitors your app and sends telemetry data to the portal. (The application can run anywhere – it doesn’t have to be hosted in Azure.)
In addition, you can pull in telemetry from the host environments such as performance counters, Azure diagnostics, or Docker logs. You can also set up web tests that periodically send synthetic requests to your web service.
All these telemetry streams are integrated in the Azure portal, where you can apply powerful analytic and search tools to the raw data.
What’s the overhead?
The impact on your app’s performance is very small. Tracking calls are non-blocking, and are batched and sent in a separate thread.