Grafana Tempo无法接收.NET服务的OpenTelemetry追踪,仅显示/health和/metrics追踪
问题:Docker Compose下.NET多服务分布式追踪仅捕获健康检查请求,业务请求无追踪数据
症状
- Tempo运行正常且可访问,但仅能捕获
/health和/metrics端点的追踪数据,业务请求无任何追踪记录 - Tempo容器启动后,仅第一个服务请求会生成追踪数据,但缺少后续跨度,之后无新追踪数据进入Tempo
- 使用预配置的
grafana/otel-lgtm镜像时追踪功能完全正常,问题仅出现在自定义Docker Compose配置中 - 查询行为异常:多次执行查询时,新生成的追踪会从结果中消失,且Tempo日志未输出任何警告或错误信息
Docker Compose中的Tempo配置
tempo: image: grafana/tempo:2.7.2 container_name: tempo restart: unless-stopped command: -config.file=/etc/tempo/tempo.yaml volumes: - tempo_data:/var/tempo - ./Infrastructure/Monitoring/tempo.yaml:/etc/tempo/tempo.yaml:ro ports: - "3200:3200" - "4317:4317" - "9095:9095" - "4318:4318" networks: - internal_network logging: driver: "json-file" options: max-size: "10m" max-file: "3" labels: - "com.haloperia.service=tempo" - "com.haloperia.environment=production"
Tempo配置文件
server: http_listen_port: 3200 grpc_listen_port: 9095 distributor: receivers: otlp: protocols: http: endpoint: 0.0.0.0:4318 grpc: endpoint: 0.0.0.0:4317 storage: trace: backend: local local: path: /var/tempo metrics_generator: registry: collection_interval: 30s storage: path: /tmp/tempo/generator/wal traces_storage: path: /tmp/tempo/generator/traces processor: span_metrics: service_graphs: max_items: 10000 local_blocks: flush_to_storage: true filter_server_spans: false overrides: metrics_generator_processors: - span-metrics - service-graphs - local-blocks
.NET服务中的追踪配置
var endpoint = config["Tracing:OtlpEndpoint"] ?? "http://tempo:4317"; Console.WriteLine($"Tracing endpoint: {endpoint}"); services.AddOpenTelemetry() .ConfigureResource(r => r.AddService(serviceName)) .WithTracing(b => { b.SetSampler(new AlwaysOnSampler()); b.AddAspNetCoreInstrumentation() .AddHttpClientInstrumentation() .AddOtlpExporter(opt => opt.Endpoint = new Uri(endpoint)); });
内容的提问来源于stack exchange,提问作者Lukbaaa
相关产品推荐
相关产品推荐

