1

I'm trying to setup logs with .NET and OpenTelemetry using a simple example.

using Microsoft.Extensions.Logging;
using OpenTelemetry.Exporter;
using OpenTelemetry.Logs;
using OpenTelemetry.Resources;

using var loggerFactory = LoggerFactory.Create(builder =>
{
    builder.ClearProviders();
    builder.AddOpenTelemetry(options =>
    {
        options
            .ConfigureResource(c => c.AddService("GettingStarted"))
            .AddConsoleExporter()
            .AddOtlpExporter(config =>
            {
                config.Endpoint = new Uri("http://localhost:4318");
                config.Protocol = OtlpExportProtocol.HttpProtobuf;
            });
    });
});

var logger = loggerFactory.CreateLogger<Program>();

for (var i = 0; i < 100; i++)
{
    logger.LogError("{count}: Hello World!", i);
    await Task.Delay(1000);
}

Collector config (otel-collector-config.yaml):

receivers:
  otlp:
    protocols:
      http:
exporters:
  logging:
    loglevel: debug
service:
  telemetry:
    logs:
      level: debug
  pipelines:
    logs:
      receivers: [otlp]
      exporters: [logging]

OpenTelemetry Collector (docker-compose.yml):

services:
  opentelemetry-collector:
    image: otel/opentelemetry-collector:0.67.0
    ports:
      - 4318:4318
    volumes:
      - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml

The logs makes their way to the console (ConsoleExporter), but I don’t see it in the logs (stdout) of the collector.

What am I doing wrong?

jpgrassi
  • 5,482
  • 2
  • 36
  • 55
M112358
  • 13
  • 4
  • Did you ever find an answer to this? (had the same question!) – Barguast Mar 22 '23 at 20:51
  • Which NuGet package have you added to get `.AddOtlpExporter()` available in logger builder? I only have this for tracing. – Dmitry A. Grechka Apr 06 '23 at 09:32
  • @DmitryA.Grechka [OpenTelemetry.Exporter.OpenTelemetryProtocol.Logs](https://www.nuget.org/packages/OpenTelemetry.Exporter.OpenTelemetryProtocol.Logs) – M112358 Apr 06 '23 at 13:13

1 Answers1

0

My best hunch is that your collector entry in the compose file is missing the command property:

services:
  opentelemetry-collector:
    image: otel/opentelemetry-collector:0.67.0
    ports:
      - 4318:4318
    # Add this line here
    command: ["--config=/etc/otel-collector-config.yaml"]
    volumes:
      - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml

So your config is actually not being applied in the collector.

jpgrassi
  • 5,482
  • 2
  • 36
  • 55