Application Insights for Azure Functions supported features

Azure Functions offers built-in integration with Application Insights, which is available through the ILogger Interface. Below is the list of currently supported features. Review Azure Functions' guide for Getting started.

For more information about Functions runtime versions, see here.

For more information about compatible versions of Application Insights, see Dependencies.

Supported features

Azure Functions V1 V2 & V3
Automatic collection of
• Requests Yes Yes
• Exceptions Yes Yes
• Performance Counters Yes Yes
• Dependencies
   — HTTP Yes
   — ServiceBus Yes
   — EventHub Yes
   — SQL Yes
Supported features
• QuickPulse/LiveMetrics Yes Yes
   — Secure Control Channel Yes
• Sampling Yes Yes
• Heartbeats Yes
Correlation
• ServiceBus Yes
• EventHub Yes
Configurable
•Fully configurable.
See Azure Functions for instructions.
See ASP.NET Core for all options.
Yes

Performance Counters

Automatic collection of Performance Counters only work Windows machines.

Live Metrics & Secure Control Channel

The custom filters criteria you specify are sent back to the Live Metrics component in the Application Insights SDK. The filters could potentially contain sensitive information such as customerIDs. You can make the channel secure with a secret API key. See Secure the control channel for instructions.

Sampling

Azure Functions enables Sampling by default in their configuration. For more information, see Configure Sampling.

If your project takes a dependency on the Application Insights SDK to do manual telemetry tracking, you may experience strange behavior if your sampling configuration is different than the Functions' sampling configuration.

We recommend using the same configuration as Functions. With Functions v2, you can get the same configuration using dependency injection in your constructor:

using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;

public class Function1 
{

    private readonly TelemetryClient telemetryClient;

    public Function1(TelemetryConfiguration configuration)
    {
        this.telemetryClient = new TelemetryClient(configuration);
    }

    [FunctionName("Function1")]
    public async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger logger)
    {
        this.telemetryClient.TrackTrace("C# HTTP trigger function processed a request.");
    }
}