Application Insights overview

Application Insights is a feature of Azure Monitor that provides extensible application performance management (APM) and monitoring for live web apps. Developers and DevOps professionals can use Application Insights to:

  • Automatically detect performance anomalies.
  • Help diagnose issues by using powerful analytics tools.
  • See what users actually do with apps.
  • Help continuously improve app performance and usability.

Application Insights:

  • Supports a wide variety of platforms, including .NET, Node.js, Java, and Python.
  • Works for apps hosted on-premises, hybrid, or on any public cloud.
  • Integrates with DevOps processes.
  • Has connection points to many development tools.
  • Can monitor and analyze telemetry from mobile apps by integrating with Visual Studio App Center.

How Application Insights works

To use Application Insights, you either install a small instrumentation package (SDK) in your app, or enable Application Insights by using the Application Insights agent. For languages and platforms that support the Application Insights agent, see Supported languages.

You can instrument the web app, any background components, and the JavaScript in the web pages themselves. The app and its components don't have to be hosted in Azure.

The instrumentation monitors your app and directs the telemetry data to an Application Insights resource by using a unique instrumentation key. The impact on your app's performance is small. Tracking calls are non-blocking, and are batched and sent in a separate thread.

You can pull in telemetry like performance counters, Azure diagnostics, or Docker logs from host environments. You can also set up web tests that periodically send synthetic requests to your web service. All these telemetry streams are integrated into Azure Monitor. In the Azure portal, you can apply powerful analytics and search tools to the raw data.

The following diagram shows how Application Insights instrumentation in an app sends telemetry to an Application Insights resource.

Diagram that shows Application Insights instrumentation in an app sending telemetry to an Application Insights resource.

What Application Insights monitors

Application Insights helps development teams understand app performance and usage. Application Insights monitors:

  • Request rates, response times, and failure rates

    Find out which pages are most popular, at what times of day, and where users are. See which pages perform best. If response times and failure rates are high when there are more requests, there might be a resourcing problem.

  • Dependency rates, response times, and failure rates, to show whether external services are slowing down performance

  • Exceptions

    Analyze the aggregated statistics, or pick specific instances and drill into the stack trace and related requests. Application Insights reports both server and browser exceptions.

  • Page views and load performance reported by users' browsers

  • AJAX calls from web pages, including rates, response times, and failure rates

  • User and session counts

  • Performance counters from Windows or Linux server machines, such as CPU, memory, and network usage

  • Host diagnostics from Docker or Azure

  • Diagnostic trace logs from apps, so you can correlate trace events with requests

  • Custom events and metrics in client or server code that track business events, like items sold

Where to see Application Insights data

There are many ways to explore Application Insights telemetry. For more information, see the following articles:

How to use Application Insights

There are several ways to get started with Application Insights. Begin with whatever works best for you, and you can add others later.

Prerequisites

  • You need an Azure account. Application Insights is hosted in Azure, and sends its telemetry to Azure for analysis and presentation. If you don't have an Azure subscription, you can sign up for free. If your organization already has an Azure subscription, an administrator can add you to it.

  • The basic Application Insights pricing plan has no charge until your app has substantial usage.

Get started

To use Application Insights at run time, you can instrument your web app on the server. This approach is ideal for apps that are already deployed, because it avoids any updates to the app code.

See the following articles for details and instructions:

You can also add Application Insights to your app code at development time. This approach lets you customize and add to telemetry collection.

See the following articles for details and instructions:

For all supported languages, platforms, and frameworks, see Supported languages.

Monitor

After you set up Application Insights, monitor your app.

  • Set up availability web tests.
  • Use the default application dashboard for your team room, to track load, responsiveness, and performance. Monitor your dependencies, page loads, and AJAX calls.
  • Discover which requests are the slowest and fail most often.
  • Watch Live Stream when you deploy a new release, to know immediately about any degradation.

Detect and diagnose

When you receive an alert or discover a problem:

  • Assess how many users are affected.
  • Correlate failures with exceptions, dependency calls, and traces.
  • Examine profiler, snapshots, stack dumps, and trace logs.

Measure, learn, and build

  • Plan to measure how customers use new user experience or business features.
  • Write custom telemetry into your code.
  • Measure the effectiveness of each new feature that you deploy.
  • Base the next development cycle on evidence from your telemetry.

Next steps