从App Insights过滤掉oidc关联失败的异常

时间:2019-01-29 18:57:45

标签: azure-application-insights

我有一个带有OpenID Connect登录名和基准App Insights安装的.net核心2.2 Web应用程序。我可以通过在登录页面上等待15分钟然后提交来生成错误。但是,我不希望这些出现在应用程序见解中,因为我们会根据错误数量发出警报。如何通过阻止应用程序发送或使应用程序洞察力忽略掉“ signin-oidc”中的这些错误?

1 个答案:

答案 0 :(得分:0)

您可以使用ITelemetryProcessor放弃不需要的消息。

首先,您需要使用Visual Studio检查错误的唯一属性(来自“ signin-oidc”),如下所示(例如,这是一条跟踪消息):

enter image description here

然后创建一个实现ITelemetryProcessor的自定义类。请记住,使用唯一属性或属性组合来过滤掉不需要的消息。如下代码:

namespace WebApplication1netcore4
{
    public class MyTelemetryProcessor : ITelemetryProcessor
    {
        private ITelemetryProcessor Next { get; set; }

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

        public void Process(ITelemetry telemetry)
        {

            ExceptionTelemetry err1= telemetry as ExceptionTelemetry;

            // you can also use combinations of properties by using && or || operator
            if (err1!= null && err1.Context.Properties.Keys.Contains("the unique property of that error"))
            {

                if (err1.Context.Properties["unique property"] == "the property value")
                {
                    //return means abandon this error message which has the specified property value
                    return;
                }
            }

            if (err1 == null)
            {
                this.Next.Process(telemetry);

            }

            if (err1 != null)
            {
                this.Next.Process(err1);
            }
        }
    }
}

然后在Startup.cs-> ConfigureServices()方法中,添加以下代码:

services.AddApplicationInsightsTelemetry();

services.AddApplicationInsightsTelemetryProcessor<MyTelemetryProcessor>();