过滤掉来自Application Insights的信号器请求

时间:2016-05-13 14:35:47

标签: signalr azure-application-insights

我对Application Insights的遥测配额的很大一部分正在被SignalR(和其他SignalR请求)的ping请求用尽。

如何阻止报告这些请求?我想保留其他ajax请求,但对SignalR请求应用某种(客户端)过滤器。

我还没有找到任何提供简单示例的好文档。我知道我可以使用addTelemetryInitializer过滤掉一些请求,但我不知道要过滤哪些内容?

    appInsights.queue.push(function () {
        appInsights.context.addTelemetryInitializer(function (envelope) {
            // What should I do here to remove /signalr requests?
        });
    });

1 个答案:

答案 0 :(得分:7)

在您的场景中,我假设您希望过滤由浏览器发出的Ajax远程依赖项调用。要从遥测中过滤我们的服务器端信号器请求,您需要在服务器端实现遥测处理器(https://azure.microsoft.com/en-us/blog/request-filtering-in-application-insights-with-telemetry-processor/

会是这样的。目前无法验证,因此稍后会修复任何语法错误:

window.appInsights = appInsights;
// Add telemetry initializer
appInsights.queue.push(function () {

appInsights.context.addTelemetryInitializer(function (envelope) {

/* filter our Ajax requests with signalr in url*/

if (envelope.name === Microsoft.ApplicationInsights.Telemetry.RemoteDependencyData.envelopeType && envelope.data.baseData.commandName.indexOf("signalr")>-1){

   return false;

 }
});
});

// end of insertion

appInsights.trackPageView();

有关JS遥测初始化程序的更多示例,请参阅此处:https://blogs.msdn.microsoft.com/albulank/2016/04/20/modifying-and-filtering-telemetry-with-appinsights-javascript-sdk-telemetry-initializer/