在 Azure 容器应用上托管 ASP.NET Core 应用程序时,Application Insights 目前未记录 cloudRoleName 和 cloudRoleInstance(或留空)。
初始化时添加自定义初始化程序,例如:
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";
}
}
}
}