过滤掉来自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)

2 years ago

在您的场景中,我假设您希望过滤由浏览器发出的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/