Otel 收集器未从 dotnet 获取日志

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

我有一个 dotnet 应用程序,可以将日志推送到酒店收集器。在本地,使用 docker compose 一切正常,但是当我尝试在 kubernetes 中运行相同的内容时,我只得到跟踪,但没有日志。

在收集器日志中,我看到此错误,这可能是原因:

info zapgrpc/zapgrpc.go:178 [transport] [server-transport 0xc002c53520] 关闭: 连接错误: desc = "transport: http2Server.HandleStreams 无法从客户端接收前言: 读取 tcp 172.16.1.45:4317->172.16。 1.43:44348: 读取:连接被对等方重置" {"grpc_log": true}

IP .45 对应于收集器,0.43 对应于应用程序。方向告诉我它从收集器到应用程序,这很令人困惑,因为应用程序应该将日志推送到收集器,而不是相反......这可能是什么原因?

我可以看到本地部署和 kubernetes 部署之间的唯一区别是应用程序正在侦听 https 而不是 http。

收集器配置如下所示:

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 ]
.net open-telemetry open-telemetry-collector
1个回答
0
投票

问题在于应用程序设置中有 OTEL_EXPORTER_OTLP_ENDPOINT,而不是作为环境变量。

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