Previous arcticle: Make performance great again!
APM covers a very wide field of topics, some of which are:
DevOps have to keep an eye on at least the top five of them.
All of those KPIs are used by software-architects for capacity-planning: How will the system cope with future growth? How many users do we expect, how many transactions per hour, how much data?
Before we jump into Application Insights, let's examine the various APM use-cases:
Application Insights covers all but the last use-case but there are different tools for different tasks. In this blog series we will talk about web applications.
The core component is the Status Monitor resp. the Insights Extension. The first one is installed on-premises and hooks istelf into IIS. The latter is added to an azure web app automatically the first time one selects Monitor => Application Insights. Both will transfer telemetry data to azure Application Insights. Application Insights itself will always run in azure but on-prem apps can send telemetry data there. The status monitor/ai extension is essential for correlating the various parts of a transaction, e.g. ajax requests -> service call -> other service call -> database. It is also needed for exposing clear-text SQL-statements. Both, Status Monitor and Insights Extensions instrument your app at runtime without source-code modifications.
The Application Insights SDK has to be added during build time. It provides a) futher insights into you app and b) the telmetry API. With the telemetry API you can add custom telemetry events to your code, e.g. track execution time between method-entry and exit.
This is a full overview of what can be done with status monitor/ai extension or the Application Insights SDK (Image taken from: Instrument web apps at runtime with Application Insights):
The azure service profiler provides profiling-capabilities in a production environment. Like a dev-profiler, it uses samples of the incoming requests to identify slow methods and critical paths.
It provides in-depth analytics of all telemtry data gathered by the Application Insights instance. A SQL-like syntax enables performance-hunters to extract and correlate information on web requests/service calls, ajax calls etc. Creating charts from queries is also supported.
The JS telemetry & API is used to instrument and monitor JS applications and to provide an end-to-end correlation from a user interaction down to the database.