Application Insights overview
Application Insights is an extension of Azure Monitor and provides Application Performance Monitoring (also known as “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.
In addition to collecting Metrics and application Telemetry data, which describe application activities and health, Application Insights can also be used 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; the logging framework rarely needs to be changed.
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 your applications external endpoint(s) to test the overall availability and responsiveness over time
- GitHub or Azure DevOps integration – create GitHub or Azure DevOps work items in context of Application Insights data
- Usage – understand which features are popular with users and how users interact and use your application
- Smart Detection – automatic failure and anomaly detection through proactive telemetry analysis
In addition, Application Insights supports Distributed Tracing, also known as “distributed component correlation”. This feature allows searching for and visualizing an end-to-end flow of a given execution or transaction. The ability to trace activity end-to-end is increasingly important for applications that have been 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 Auto-Instrumentation (agent) or by adding the Application Insights SDK to your application code. Many languages are supported and the applications could be on Azure, on-premises, or hosted by another cloud. To figure out which type of instrumentation is best for you, reference How do I instrument an application?.
The Application Insights agent or SDK pre-processes telemetry and metrics before sending the data to Azure where it's ingested and processed further before being 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 search within data (for example Log Traces) and filter to a given correlated operation of interest.
Jump into analytics with Performance view – get deep insights into how your Application or API and downstream dependencies are performing and find for a representative sample to explore end to end. And, be proactive with the 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 should your Application or components parts deviate from the established baseline.
How do I instrument an application?
Auto-Instrumentation 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 in the following circumstances:
- You require custom events and metrics
- You require control over the flow of telemetry
- Auto-Instrumentation isn't available (typically due to language or platform limitations)
Azure Monitor Application Insights Agent is available for workloads running in on-premises virtual machines.
A detailed view of all Auto-instrumentation supported environments, languages, and resource providers are available here.
For other scenarios, the Application Insights SDK is required.
A preview Open Telemetry offering is also available.
Review frequently asked questions.
Microsoft Q&A questions forum
Post questions to the Microsoft Q&A answers forum.
Post coding questions to Stack Overflow using an Application Insights tag.
Leave product feedback for the engineering team on UserVoice.
Supported platforms and frameworks
Supported platforms and frameworks are listed here.
Azure service integration (portal enablement, Azure Resource Manager deployments)
- Azure Virtual Machines and Azure Virtual Machine Scale Sets
- Azure App Service
- Azure Functions
- Azure Cloud Services, including both web and worker roles
Auto-instrumentation (enable without code changes)
Manual instrumentation / SDK (some code changes required)
- ASP.NET Core
- Windows desktop applications, services, and worker roles
- Universal Windows app (App Center)
- Android (App Center)
- iOS (App Center)
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. However, Azure Monitor only provides support when you use the supported instrumentation options listed on this page. We're constantly assessing opportunities to expand our support for other languages. Follow Azure Updates for Application Insights for the latest SDK news.
Submit and view feedback for