0

I'm currently trying to setup an OTLP collector instance within Docker on my local machine to collect traces emitted by a project running on .NET6. The issue is, that while I can create traces (I can see them using the ConsoleExporter) and can get my collector running, I am unable to send any Traces to the collector from within my application. I can curl "http://localhost:4317" but when trying to send traces there is nothing to be seen in the collector.

When investigating with zpages I can also see, that no traces are being received by the collector. If I run the entire thing with the same configuration in a kubernetes cluster however, it works. Of course in that case the endpoint "localhost" is changed to the respective pod-name.

Aplication instrumentation

services.AddOpenTelemetryTracing(builder => 
{
builder.SetResourceBuilder(
    ResourceBuilder.CreateDefault()
    .AddService(serviceName: serviceName))
.AddAspNetCoreInstrumentation()
.AddOtlpExporter(config =>
{
    config.Endpoint = new Uri("http://localhost:4317");
});

Collector Configuration

receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317
      http:

processors:
  batch:

exporters:
  logging:
    loglevel: debug

extensions:
  health_check:
  zpages:
    endpoint: 0.0.0.0:55679

service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlp, logging]
  extensions: [health_check, zpages]

Container Configuration

otlp-collector:
  image: otel/opentelemetry-collector:0.55.0
  container_name: otlp-collector
  command: ["--config=/etc/otel-collector-config.yml"]
  volumes:
    - ./otel-collector-config.yml:/etc/otel-collector-config.yml
  ports:
    - "4317:4317"
    - "55679:55679"

Edit: The application is running on my machine, not inside the Docker.

felixhir
  • 1
  • 2

0 Answers0