Application Insights overview
Application Insights is an extension of Azure Monitor and provides application performance monitoring (APM) features. APM tools are useful to monitor applications from development, through test, and into production in the following ways:
- Proactively understand how an application is performing.
- Reactively review application execution data to determine the cause of an incident.
Along with collecting metrics and application telemetry data, which describe application activities and health, you can use Application Insights to collect and store application trace logging data.
The log trace is associated with other telemetry to give a detailed view of the activity. Adding trace logging to existing apps only requires providing a destination for the logs. You rarely need to change the logging framework.
Application Insights provides other features including, but not limited to:
- Live Metrics: Observe activity from your deployed application in real time with no effect on the host environment.
- Availability: Also known as synthetic transaction monitoring. Probe the external endpoints of your applications to test the overall availability and responsiveness over time.
- GitHub or Azure DevOps integration: Create GitHub or Azure DevOps work items in the context of Application Insights data.
- Usage: Understand which features are popular with users and how users interact and use your application.
- Smart detection: Detect failures and anomalies automatically through proactive telemetry analysis.
Application Insights supports distributed tracing, which is also known as distributed component correlation. This feature allows searching for and visualizing an end-to-end flow of a specific execution or transaction. The ability to trace activity from end to end is important for applications that were built as distributed components or microservices.
The Application Map allows a high-level, top-down view of the application architecture and at-a-glance visual references to component health and responsiveness.
To understand the number of Application Insights resources required to cover your application or components across environments, see the Application Insights deployment planning guide.
How do I use Application Insights?
Application Insights is enabled through either autoinstrumentation (agent) or by adding the Application Insights SDK or Azure Monitor OpenTelemetry Distro to your application code. Many languages are supported. The applications could be on Azure, on-premises, or hosted by another cloud. To figure out which type of instrumentation is best for you, see How do I instrument an application?.
The Application Insights agent or SDK preprocesses telemetry and metrics before sending the data to Azure. Then it's ingested and processed further before it's stored in Azure Monitor Logs (Log Analytics). For this reason, an Azure account is required to use Application Insights.
The easiest way to get started consuming Application insights is through the Azure portal and the built-in visual experiences. Advanced users can query the underlying data directly to build custom visualizations through Azure Monitor dashboards and workbooks.
Consider starting with the Application Map for a high-level view. Use the Search experience to quickly narrow down telemetry and data by type and date-time. Or you can search within data (for example, with Log Traces) and filter to a given correlated operation of interest.
Two views are especially useful:
- Performance view: Get deep insights into how your application or API and downstream dependencies are performing. You can also find a representative sample to explore end to end.
- Failure view: Understand which components or actions are generating failures and triage errors and exceptions. The built-in views are helpful to track application health proactively and for reactive root-cause analysis.
Create Azure Monitor alerts to signal potential issues in case your application or components parts deviate from the established baseline.
Application Insights pricing is based on consumption. You only pay for what you use. For more information on pricing, see:
How do I instrument an application?
Autoinstrumentation is the preferred instrumentation method. It requires no developer investment and eliminates future overhead related to updating the SDK. It's also the only way to instrument an application in which you don't have access to the source code.
You only need to install the Application Insights SDK if:
- You require custom events and metrics.
- You require control over the flow of telemetry.
- Autoinstrumentation isn't available, typically because of language or platform limitations.
The instrumentation monitors your app and directs the telemetry data to an Application Insights resource by using a unique token. The effect on your app's performance is small. Tracking calls are nonblocking and batched to be sent in a separate thread.
Integrated autoinstrumentation is available for Azure App Service .NET, Azure App Service .NET Core, Azure Functions, and Azure Virtual Machines.
The Azure Monitor Application Insights agent is available for workloads running in on-premises virtual machines.
For a detailed view of all autoinstrumentation supported environments, languages, and resource providers, see What is autoinstrumentation for Azure Monitor Application Insights?.
For other scenarios, the Application Insights SDK is required.
A preview OpenTelemetry offering is also available.
This section outlines supported scenarios.
Supported platforms and frameworks
This section lists all supported platforms and frameworks.
Azure service integration (portal enablement, Azure Resource Manager deployments)
- Azure Virtual Machines and Azure Virtual Machine Scale Sets
- Azure App Service
- Azure Functions
- Azure Spring Apps
- Azure Cloud Services, including both web and worker roles
Autoinstrumentation (enable without code changes)
Manual instrumentation/SDK (some code changes required)
OpenTelemetry-based instrumentation is available in preview for C#, Node.js, and Python. Review the limitations noted at the beginning of each language's official documentation. If you require a full-feature experience, use the existing Application Insights SDKs.
- Log4Net, NLog, or System.Diagnostics.Trace
- Log4J, Logback, or java.util.logging
- LogStash plug-in
- Azure Monitor
Export and data analysis
Several other community-supported Application Insights SDKs exist. Azure Monitor only provides support when you use the supported instrumentation options listed in this article.
We're constantly assessing opportunities to expand our support for other languages. For the latest SDK news, see Azure updates for Application Insights.
Frequently asked questions
Review frequently asked questions.
Review dedicated troubleshooting articles for Application Insights.
Help and support
Azure technical support
For Azure support issues, open an Azure support ticket.
Microsoft Q&A questions forum
Post general questions to the Microsoft Q&A answers forum.
Post coding questions to Stack Overflow by using an Application Insights tag.
Leave product feedback for the engineering team in the Feedback Community.
Submit and view feedback for