Skip to content
Install · free

OpenTelemetry

Point your existing OpenTelemetry setup at LogNorth with two env vars

Already using OpenTelemetry? Two env vars and you’re done:

Terminal window
OTEL_EXPORTER_OTLP_ENDPOINT=https://logs.yoursite.com/otel
OTEL_EXPORTER_OTLP_HEADERS=Authorization=Bearer lgn-your-api-key

LogNorth speaks OTLP over HTTP with protobuf (http/protobuf), the default protocol of the OTel specification. It does not accept OTLP/JSON or gRPC: an exporter that sends JSON by default, such as @opentelemetry/exporter-logs-otlp-http in Node, needs the protobuf exporter instead, or OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf where the SDK reads it. Gzip bodies work.

We accept everything your app sends. We keep the logs. Traces and metrics are accepted and discarded. LogNorth does logs and errors, that’s it.

From each log record, we extract what matters:

OTel field LogNorth field Notes
body message Records without a text body are skipped
timeUnixNano timestamp Falls back to observedTimeUnixNano
attributes context Flattened key-value map
resource.attributes context Merged (log attributes win on conflict)
severityNumber is_error ERROR and FATAL severity → error
traceId trace_id Hex-encoded, all-zeros stripped
exception.message context.error OTel semantic convention
exception.type context.error_class Groups errors into issues

A log record becomes an error if any of these are true:

  • Severity is ERROR or FATAL
  • exception.message or error.message attribute exists
  • exception.type or error.type attribute exists

Same rules as the native ingestion API.

  • Traces (/v1/traces): accepted, discarded
  • Metrics (/v1/metrics): accepted, discarded
  • Span IDs, flags, dropped attribute counts: not used
  • Resource attributes like service.name: stored in context, not used for routing