You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure容器应用中Dapr服务调用日志未在ApplicationInsights收集的问题

解决Dapr服务间调用时Application Insights无法收集日志的问题

可能的原因与对应解决方案

1. 确保分布式跟踪上下文正确传递

Dapr服务间调用需要传递跟踪头来关联请求链,需确保应用配置了正确的分布式跟踪:

  • 在Program.cs中添加Dapr客户端时默认已支持跟踪,同时确保Application Insights集成了分布式跟踪:
    builder.Services.AddDaprClient();
    builder.Services.AddApplicationInsightsTelemetry();
    
  • 在Azure Container Apps中为Dapr Sidecar设置环境变量启用跟踪导出:
    • DAPR_TRACING_ENABLED=true
    • DAPR_TRACING_EXPORTER=applicationinsights
    • DAPR_TRACING_CONNECTION_STRING=InstrumentationKey=你的检测密钥;IngestionEndpoint=对应 ingestion 地址

2. 调整日志配置包含目标类别

在appsettings.json中明确指定需要收集的日志类别,覆盖默认过滤规则:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning",
      "MyEndpoint": "Information",
      "Dapr": "Information",
      "Dapr.Client": "Information",
      "Dapr.AspNetCore": "Information"
    },
    "ApplicationInsights": {
      "LogLevel": {
        "Default": "Information"
      }
    }
  }
}

3. 让日志关联到请求上下文

Minimal API中建议直接注入ILogger<T>,而非手动通过ILoggerFactory创建,这样日志会自动关联当前请求的Trace ID,便于在Application Insights中完整追踪:

// 修改端点代码,直接注入ILogger
app.MapGet("/myendpoint", async ([FromServices] ILogger<Program> logger, /*其他参数*/) =>
{
    logger.LogInformation("进入myendpoint方法");
    try
    {
        // 业务逻辑
    }
    catch (Exception ex)
    {
        logger.LogError(ex, "myendpoint执行出错");
        throw;
    }
});

若必须使用ILoggerFactory,可手动关联请求Trace ID:

app.MapGet("/myendpoint", async ([FromServices] ILoggerFactory loggerFactory, [FromServices] IHttpContextAccessor httpContextAccessor, /*其他参数*/) =>
{
    var logger = loggerFactory.CreateLogger("MyEndpoint");
    var traceId = httpContextAccessor.HttpContext?.TraceIdentifier;
    logger.LogInformation("TraceId: {TraceId} - 进入myendpoint方法", traceId);
    try
    {
        // 业务逻辑
    }
});

4. 调整Application Insights采样设置

避免采样规则过滤掉Dapr调用的日志,在appsettings.json中设置100%采样或禁用采样:

{
  "ApplicationInsights": {
    "ConnectionString": "你的连接字符串",
    "Sampling": {
      "Enabled": false,
      "Percentage": 100
    }
  }
}

5. 检查Dapr Sidecar日志

在Azure Container Apps的日志界面中切换到Dapr Sidecar的日志流,搜索跟踪相关错误,确认Sidecar是否成功将跟踪数据发送到Application Insights。

内容的提问来源于stack exchange,提问作者fra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 13:20:18