ASP.NET Core OpenTelemetry 与 AWS XRay 集成(无收集器)

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

我们正在 AWS ECS Fargate 中运行一个 dockerized ASP.NET Core 应用程序。我们想要将 Open Telemetry 添加到我们的项目中 - 我尝试仅添加相应的代码(库 + 注入 + 配置)来设置它,假设它默认情况下会获取 AWS 凭证(在 AWS 服务内运行) - 但跟踪不会弥补 AWS X-Ray 的不足。代码和docker文件如下。请注意,运行 Console Exporter 似乎正在拾取痕迹。

  • 我可以避免将 otel Collector 作为单独的服务运行吗? (作为边车或单独的容器)
  • 您认为下面有什么配置错误的地方吗?

提前致谢...

services.AddOpenTelemetry()
    .WithTracing(builder =>
    {
        var options = new OpenTelemetryOptions();
        configuration.GetSection(OpenTelemetryOptions.OptionsKey).Bind(options);
        builder.SetResourceBuilder(ResourceBuilder.CreateDefault()
        .AddService(options.ServiceName, autoGenerateServiceInstanceId: false))
        .AddSource(sourceName.Name);
        if (options.TraceExportMode == TraceExportMode.OpenTelemetryAws)
        {
            builder.AddXRayTraceId();
            Sdk.SetDefaultTextMapPropagator(new AWSXRayPropagator());
        }
        switch (options.TraceExportMode)
        {
            case TraceExportMode.OpenTelemetryAws:
                {
                    builder.SetSampler(new AlwaysOnSampler()).AddOtlpExporter(o =>
                    {
                        o.Endpoint = new Uri(options.OpenTelemetryEndpoint);
                        o.Headers = options.OpenTelemetryHeaders;
                        o.TimeoutMilliseconds = options.OpenTelemetryTimoutMilliseconds;
                        o.ExportProcessorType = options.EnableBatching
                            ? ExportProcessorType.Batch
                            : ExportProcessorType.Simple;
                        o.BatchExportProcessorOptions = 
         BuildBatchExportProcessorOptions(options);
                    });
                    break;
                }
            default:
                {
                    builder.SetSampler(new AlwaysOffSampler());
                    break;
                }
        }
   });
services.AddSingleton(_ => new ActivitySource(sourceName.Name ?? string.Empty, sourceName.Version?.ToString()));

Docker 文件如下:

FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/sdk:7.0 as sdk
RUN dotnet tool install --global dotnet-counters
RUN dotnet tool install --global dotnet-dump
RUN dotnet tool install --global dotnet-gcdump
RUN dotnet tool install --global dotnet-stack
RUN dotnet tool install --global dotnet-trace
FROM base AS final
## Copy dotnet tools
COPY --from=sdk /root/.dotnet/tools/ /opt/bin
ENV PATH="/opt/bin:${PATH}"
***** ..... *****

## Copy service
WORKDIR /app
COPY ./Artifacts/MyProject .
ENTRYPOINT ["dotnet", "MyProject.dll"]
asp.net-core open-telemetry aws-xray open-telemetry-collector observability
1个回答
0
投票

是的,您可以使用 Cloudformation 模板将 ADOT Collector 部署为 sidecar https://aws-otel.github.io/docs/setup/ecs/cfn-for-ecs-fargate

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