如何在Azure Application Insights中抑制HTTP错误440

时间:2019-06-27 19:20:13

标签: azure-application-insights http-error

Azure Application Insights是一个很棒的工具,但是我们遇到了一些虚假的错误。具体来说,当用户在我们的Web应用程序上超时时,该应用程序将引发一个HTTP 440错误(我猜这是MS特定代码),该错误已过期。这是一种误报,我不在乎跟踪这些消息或从中获取警报。

在Application Insights中是否可以抑制这种情况?或者我必须在代码中做些什么才能做到这一点?

如果不能抑制它们,我想我可以设置一个警报,如果我可以从那里过滤掉440s。

enter image description here

1 个答案:

答案 0 :(得分:3)

您可以使用ITelemetryProcessor来过滤出HTTP错误440:

在您的Web项目中,添加一个类似MyErrorFilter的类:

    public class MyErrorFilter: ITelemetryProcessor
    {
        private ITelemetryProcessor Next { get; set; }

        public MyErrorFilter(ITelemetryProcessor next)
        {
           this.Next = next;
        }

        public void Process(ITelemetry item)
        {
            var request = item as RequestTelemetry;

            if (request != null &&
            request.ResponseCode.Equals("440", StringComparison.OrdinalIgnoreCase))
            {
                // To filter out an item, just terminate the chain:
                return;
            }
            // Send everything else:
            this.Next.Process(item);
        }
    }

如果是.net Framework Web项目,则在ApplicationInsights.config文件中,添加以下内容(类型为assembly_name.class_name):

<TelemetryProcessors>

  <Add Type="WebApplication9.MyErrorFilter, WebApplication9"></Add>
</TelemetryProcessors>

如果它是.net核心Web项目,则将Microsoft.ApplicationInsights.AspNetCore安装或更新为2.7.1,然后在Startup.cs-> ConfigureServices方法中,添加以下代码行:

services.AddApplicationInsightsTelemetry();
services.AddApplicationInsightsTelemetryProcessor<MyErrorFilter>();