无法使用 opentelemetry-dotnet 在 NewRelic 中查看日志

问题描述 投票:0回答:1

当应用程序启动(asp.net)时,会发送一些日志,并且它们在 NewRelic 中可见。但是当应用程序处理http请求时,通过ILogger发送的日志永远不会出现在NewRelic中。我有 OTEL_DIAGNOSTICS.json 文件,但没有写入错误。 ConsoleExporter 工作完美。我可以正常看到痕迹。在 NewRelic 中,NrIntegrationError 集合中没有出现任何内容。我做错了什么? NewRelic 似乎只显示与跟踪和跨度不相关的日志。

builder.Services.AddOpenTelemetry()
    .ConfigureResource(builder => builder.AddService(Otel.ServiceName, serviceVersion: Otel.ServiceVersion))
    .WithLogging(logging => logging
        .AddConsoleExporter()
        .AddOtlpExporter(otlp =>
        {
            otlp.Endpoint = new Uri($"{_otelEndpoint}/v1/logs");
            otlp.Headers = $"api-key={_otelApiKey}";
            otlp.Protocol = _otelProtocol; // Using Http/Protobuf
        }), options =>
        {
            options.IncludeFormattedMessage = true;
            options.IncludeScopes = true;
            options.ParseStateValues = true;
        })
    .WithTracing(tracing => tracing
        .AddSource(Otel.ServiceName)
        .AddAspNetCoreInstrumentation()
        .AddHttpClientInstrumentation()
        .AddRedisInstrumentation()
        .AddAWSInstrumentation()
        .AddOtlpExporter(options =>
        {
            options.Endpoint = new Uri($"{_otelEndpoint}/v1/traces");
            options.Headers = $"api-key={_otelApiKey}";
            options.Protocol = _otelProtocol;
        }))
    .WithMetrics(metrics => metrics
        .AddAspNetCoreInstrumentation()
        .AddHttpClientInstrumentation()
        .AddOtlpExporter(options =>
        {
            options.Endpoint = new Uri($"{_otelEndpoint}/v1/metrics");
            options.Headers = $"api-key={_otelApiKey}";
            options.Protocol = _otelProtocol;
        }));
c# asp.net .net newrelic open-telemetry
1个回答
0
投票

您的问题可能与NewRelic中日志和痕迹之间的相关性有关。以下是一些需要检查的事项:

上下文关联:确保您的 OpenTelemetry 日志设置 (AddOtlpExporter) 包含正确的上下文传播,以便日志与跟踪 ID 相关。

日志级别设置:确保日志级别没有被过滤掉。将日志级别设置为“调试”或“信息”以验证日志是否出现。

端点和协议:仔细检查 OTLP 端点 (_otelEndpoint/v1/logs)、标头(api-key)和协议设置,以确保它们正确且与 NewRelic 兼容。

上下文中的日志:使用 NewRelic 的“上下文中的日志”功能来帮助将日志与跟踪关联起来。考虑添加 NewRelic.LogEnrichers 包以进行自动丰富。

日志处理器:确保您使用 BatchLogProcessor 来管理日志导出,并且正确传播 Activity.Current 以维护上下文。

© www.soinside.com 2019 - 2024. All rights reserved.