What is auto-instrumentation for Azure Monitor application insights?
Auto-instrumentation allows you to enable application monitoring with Application Insights without changing your code.
Application Insights is integrated with various resource providers and works on different environments. In essence, all you have to do is enable and - in some cases - configure the agent, which will collect the telemetry automatically. In no time, you'll see the metrics, requests, and dependencies in your Application Insights resource, which will allow you to spot the source of potential problems before they occur, and analyze the root cause with end-to-end transaction view.
Supported environments, languages, and resource providers
As we're adding new integrations, the auto-instrumentation capability matrix becomes complex. The table below shows you the current state of the matter as far as support for various resource providers, languages, and environments go.
|Environment/Resource Provider||.NET||.NET Core||Java||Node.js||Python|
|Azure App Service on Windows||GA, OnBD*||GA, opt-in||Public Preview||Public Preview||Not supported|
|Azure App Service on Linux||N/A||Not supported||GA||GA||Not supported|
|Azure Functions - basic||GA, OnBD*||GA, OnBD*||GA, OnBD*||GA, OnBD*||GA, OnBD*|
|Azure Functions - dependencies||Not supported||Not supported||Public Preview||Not supported||Through extension|
|Azure Spring Cloud||Not supported||Not supported||Public Preview||Not supported||Not supported|
|Azure Kubernetes Service||N/A||Not supported||Through agent||Not supported||Not supported|
|Azure VMs Windows||Public Preview||Not supported||Through agent||Not supported||Not supported|
|On-Premises VMs Windows||GA, opt-in||Not supported||Through agent||Not supported||Not supported|
|Standalone agent - any env.||Not supported||Not supported||GA||Not supported||Not supported|
*OnBD is short for On by Default - the Application Insights will be enabled automatically once you deploy your app in supported environments.
Azure App Service
Application monitoring on Azure App Service on Windows is available for ASP.NET (enabled by default), ASP.NET Core, Java (in public preview), and Node.js applications. To monitor a Python app, add the SDK to your code.
For Windows, application monitoring is currently available for code-based/managed services on App Service. Monitoring for apps on Windows Containers on App Service is not yet supported through the integration with Application Insights.
For Python, use the SDK.
The basic monitoring for Azure Functions is enabled by default to collects log, performance, error data, and HTTP requests. For Java applications, you can enable richer monitoring with distributed tracing and get the end-to-end transaction details. This functionality for Java is in public preview for Windows and you can enable it in Azure portal.
Azure Spring Cloud
Application monitoring for Java apps running in Azure Spring Cloud is integrated into the portal, you can enable Application Insights directly from the Azure portal, both for the existing and newly created Azure Spring Cloud resources.
Azure Kubernetes Service
Codeless instrumentation of Azure Kubernetes Service is currently available for Java applications through the standalone agent.
Azure Windows VMs and virtual machine scale set
Auto-instrumentation for Azure VMs and virtual machine scale set is available for .NET and Java - this experience is not integrated into the portal. The monitoring is enabled through a few steps with a stand-alone solution and does not require any code changes.
The versatile Java standalone agent works on any environment, there's no need to instrument your code. Follow the guide to enable Application Insights and read about the amazing capabilities of the Java agent. The agent is in public preview and available on all regions.