azure-functions-host
azure-functions-host copied to clipboard
ITelemetryProcessor does not appear to be supported in Function Apps
From @StevenTaylor on October 5, 2018 5:50
Documentation (https://docs.microsoft.com/en-us/azure/application-insights/app-insights-api-filtering-sampling) suggests that ITelemetryProcessor can be used to filter\sample the telemetry before it is sent App Insights.
But the implementation code is never called in our Function App.
The code to set up the builder is called, which looks like:
var builder = TelemetryConfiguration.Active.TelemetryProcessorChainBuilder; builder.Use((next) => new AppInsightsFilter(next)); builder.Build();
But the 'Process' method implemented in the class is never called, the class looks like:
` class AppInsightsFilter : ITelemetryProcessor { private ITelemetryProcessor Next { get; set; }
// Link processors to each other in a chain.
public AppInsightsFilter(ITelemetryProcessor next)
{
this.Next = next;
}
public void Process(ITelemetry item)
{
// To filter out an item, just return
if (!OKtoSend(item)) { return; }
// Modify the item if required
//ModifyItem(item);
this.Next.Process(item);
}
private bool OKtoSend(ITelemetry item)
{
// try something!
return (DateTime.Now.Second <= 20); // only send for the first 20 seconds of a minute
}
}`
PS. We have tried setting config values SamplingPercentage (App Insights config) and maxTelemetryItemsPerSecond (host.json) as low as possible to reduce the telemetry data, but there is still too much telemetry.
Copied from original issue: Azure/Azure-Functions#981