首页 > 解决方案 > Azure Application Insights 将响应代码零标记为成功

问题描述

最近我们遇到了一个问题,我们的服务器由于巨大的流量激增而超时,并且这些请求遥测作为成功登录到 AI 中,响应代码为零。有没有办法将响应代码零配置为失败。由于请求遥测是由 AI 自动捕获的,所以我们对此没有任何处理

标签: azureasp.net-coreazure-application-insights

解决方案


您可以在 .NET 核心项目中使用ITelemetryInitializer来实现。

当响应码为零时称为失败,您可以将Success请求遥测数据的属性设置为false。示例代码如下(本次测试使用 .NET core 2.2)。请确保您使用的是最新版本的Microsoft.ApplicationInsights.AspNetCore 2.13.1。

这是自定义的 ITelemetryInitializer:

public class MyTelemetryInitializer : ITelemetryInitializer
{
    public void Initialize(ITelemetry telemetry)
    {
        if (telemetry is RequestTelemetry)
        {
            var requestTelemetry = telemetry as RequestTelemetry;

            //you can change the ResponseCode to "0" in your project
            if (requestTelemetry.ResponseCode == "200")
            {
                // set Success property to false
                requestTelemetry.Success = false;
            }
        }
    }
}

然后在Startup.cs->ConfigureServices方法中注册它:

    public void ConfigureServices(IServiceCollection services)
    {         
        //your other code

        //here, register the custom ITelemetryInitializer
        services.AddSingleton<ITelemetryInitializer, MyTelemetryInitializer>();

    }

执行代码后,在 azure 门户 -> 您的应用程序洞察 -> 日志中,您可以看到请求的 Success 属性为 false:

在此处输入图像描述


推荐阅读