代码之家  ›  专栏  ›  技术社区  ›  Kai Walter

如何使用Application Insights记录cloudRoleName和cloudRoleInstance。NET Azure容器应用程序?

  •  0
  • Kai Walter  · 技术社区  · 1 年前

    当托管ASP时。Azure容器应用程序上的.NET Core应用程序、cloudRoleName和cloudRoleInstance当前未在application Insights中记录(或留空)。

    1 回复  |  直到 1 年前
        1
  •  1
  •   Kai Walter    1 年前

    初始化时,添加一个自定义初始化器,如下所示:

    using Microsoft.ApplicationInsights.Extensibility;
    using Microsoft.AspNetCore.Mvc;
    using Models;
    using Utils;
    
    var builder = WebApplication.CreateBuilder(args);
    builder.Services.AddApplicationInsightsTelemetry();
    builder.Services.Configure<TelemetryConfiguration>((o) =>
    {
        o.TelemetryInitializers.Add(new AppInsightsTelemetryInitializer());
    });
    

    然后用初始化

    using Microsoft.ApplicationInsights.Channel;
    using Microsoft.ApplicationInsights.Extensibility;
    
    namespace Utils
    {
    
        public class AppInsightsTelemetryInitializer : ITelemetryInitializer
        {
            public void Initialize(ITelemetry telemetry)
            {
                if (string.IsNullOrEmpty(telemetry.Context.Cloud.RoleName))
                {
                    telemetry.Context.Cloud.RoleName = System.Environment.GetEnvironmentVariable("CONTAINER_APP_NAME") ?? "CONTAINER_APP_NAME-not-set";
                }
                if (string.IsNullOrEmpty(telemetry.Context.Cloud.RoleInstance))
                {
                    telemetry.Context.Cloud.RoleInstance = System.Environment.GetEnvironmentVariable("HOSTNAME") ?? "HOSTNAME-not-set";
                }
            }
        }
    
    }
    
    推荐文章