Ist es möglich, benutzerdefinierte Dimensionen einer Aktivität, die über Opentelemetry an Azuremonitor angemeldet ist, mC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Ist es möglich, benutzerdefinierte Dimensionen einer Aktivität, die über Opentelemetry an Azuremonitor angemeldet ist, m

Post by Anonymous »

Ich habe ein C# .NET 8-Webapi, wobei Metriken, Verfolgung und Protokollierung über Opentelemetry an Azure Monitor gesendet werden.var serviceName = "My-import-service";
var connStr = builder.Configuration["ConnectionStrings:Azure"];
builder.Logging.AddOpenTelemetry(options =>
{
options
.SetResourceBuilder(
ResourceBuilder.CreateDefault()
.AddService(serviceName))
.AddConsoleExporter();
});
builder.Services.AddOpenTelemetry()
.ConfigureResource(resource => resource.AddService(serviceName))
.WithTracing(tracing => tracing
.AddAspNetCoreInstrumentation()
.AddAzureMonitorTraceExporter(opt => opt.ConnectionString = connStr)
.AddConsoleExporter())
.WithMetrics(metrics => metrics
.AddAspNetCoreInstrumentation()
.AddAzureMonitorMetricExporter(opt => opt.ConnectionString = connStr)
.AddConsoleExporter())
.WithLogging(logging => logging
.AddConsoleExporter()
.AddAzureMonitorLogExporter(opt => opt.ConnectionString = connStr));
< /code>
Die in Azure Monitor exportierten grundlegenden Informationen werden alle angezeigt, wo ich sie erwarten würde, aber die erweiterten Eigenschaften, die aus den Tags der Aktivität gelesen werden, in denen wir gerade sind, machen es beim Exportieren eines Protokolleintrags nicht. In einigen Middleware füge ich beispielsweise ein Tag hinzu: < /p>
Activity.Current?.SetTag("ProcessedTime", DateTime.UtcNow.ToString());
< /code>
Dies erscheint in der angemeldeten "Anfrage" gut, und ich kann dies in Anwendungseinsichten als benutzerdefinierte Dimension sehen. Wie in diesem Bild:

Wenn jedoch in dem Controller die Anforderung verantwortlich ist, füge ich eine logarithmische Anweisung hinzu, z. B.:
_logger.LogInformation("Getting weather forecast");
< /code>
Ich werde diese logarithmische Anweisung im Abschnitt "Traces of Application Insight" sehen, aber die Tags, die ich auf der Middleware -Ebene hinzugefügt habe, sind nicht vorhanden.Activity.Current?.SetTag("SomeNewTag", "Birds live in forests");
_logger.LogInformation("Getting weather forecast");
< /code>
Ich kann den Protokolleintrag im Abschnitt "Traces" sehen, haben aber immer noch nicht die Tags als benutzerdefinierte Dimensionen wie SO:

Auf Azure.Monitor.opentelemetry.exporter 1.4.0-beta.2 als Drop-In-Ersatz (wie es anscheinend neuer zu sein) ist die gleichen Ergebnisse. Programm.cs:
< /p>
und hier ist der Controller:

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post