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

Otel Collector无法接收K8s中.NET应用日志问题排查求助

问题

我有一个.NET应用,负责向Otel Collector推送日志。在本地通过Docker Compose部署时一切正常,但部署到Kubernetes环境后,仅能接收到链路追踪数据,无法获取日志。

在Collector日志中发现以下相关错误:

info zapgrpc/zapgrpc.go:178 [transport] [server-transport 0xc002c53520] Closing: connection error: desc = "transport: http2Server.HandleStreams failed to receive the preface from client: read tcp 172.16.1.45:4317->172.16.1.43:44348: read: connection reset by peer" {"grpc_log": true}

其中IP .45对应Collector,.43对应应用程序。连接方向显示Collector指向应用,这与应用应向Collector推送日志的预期不符,请问可能的原因是什么?

本地与Kubernetes部署的唯一差异是应用在K8s中使用HTTPS而非HTTP监听。

Collector配置如下:

receivers:
  otlp/app:
    protocols:
      grpc:
      http:
exporters:
  logging:
    loglevel: debug
  prometheus: # metrics
    endpoint: "0.0.0.0:8889"
    send_timestamps: true
    resource_to_telemetry_conversion:
      enabled: true
    const_labels:
      exported: "collector"
  otlp/tempo:
    endpoint: tempo:4317
    tls:
      insecure: true
  loki:
    endpoint: http://loki:3100/loki/api/v1/push
service:
  telemetry:
    logs:
      level: "debug"
  pipelines:
    metrics:
      receivers: [ otlp/app ]
      exporters: [ prometheus ]
    
    traces:
      receivers: [ otlp/app ]
      exporters: [ otlp/tempo ]
    logs:
      receivers: [ otlp/app ]
      exporters: [ logging, loki ]
分析与解决思路
  • TLS配置不匹配
    .NET应用在K8s中启用了HTTPS,但Collector的OTLP gRPC接收器默认未开启TLS。链路追踪可能使用了HTTP端口(4318)正常通信,而日志推送用了gRPC端口(4317)时因TLS握手失败导致连接被重置。要么给Collector的OTLP gRPC接收器配置TLS参数,要么让.NET应用推送日志时禁用TLS(集群内部允许的情况下)。

  • 连接方向是日志格式误解
    日志里的172.16.1.45:4317->172.16.1.43:44348是Collector作为服务端,监听4317端口接收来自应用44348端口的连接请求,属于正常的服务端日志格式——显示的是服务端端口指向客户端发起连接的端口,并非Collector主动连接应用,这个方向描述无需纠结。

  • .NET应用日志推送配置未同步更新
    本地HTTP环境下,应用的OTLP配置可能指向Collector的HTTP端口;切换到K8s的HTTPS环境后,可能没同步修改日志推送的协议、端口或TLS参数。比如链路追踪适配了HTTPS端口,但日志推送仍用gRPC端口却未配置TLS相关选项,导致连接失败。检查.NET应用的OpenTelemetryLoggerOptions配置,确认推送地址、TLS启用状态、证书验证规则等参数。

  • Kubernetes网络策略限制
    虽然链路追踪能正常通信,但日志使用的gRPC端口(4317)可能被K8s网络策略拦截。检查应用所在命名空间的网络策略规则,确保应用Pod有权限访问Collector的4317端口。

  • Collector日志管道验证
    当前Collector的logs管道配置看起来没问题,但可以重启Collector并查看更详细的debug日志,确认是否有日志数据进入接收器但未被正确导出到Loki或logging exporter。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 18:22:26