Send OpenTelemetry traces and logs to Lampwick

Point any OpenTelemetry SDK or Collector at https://app.lampwick.dev over OTLP/HTTP with your project's ingest token. Spans become requests, jobs and issues.

Updated View as Markdown

Lampwick takes traces and logs over OTLP/HTTP, so an app in any language with an OpenTelemetry SDK can send to it without a Lampwick package. We tested Node.js, Next.js and Python end to end. Lampwick turns spans and log records into its own records, following the semantic conventions.

What you get

OpenTelemetryIn Lampwick
SERVER spansRequests, grouped by http.route
Spans with db.systemQueries
HTTP client spansOutgoing requests
CONSUMER and PRODUCER spansJobs and Queued jobs
exception span eventsIssues, grouped by type and your own top stack frames
Log recordsLogs, tied to their request or job
enduser.id, user.idUsers

Queries, logs and exceptions show up under their request or job, through the span hierarchy. Other spans (middleware, router layers) are not stored and don't count as events. gRPC and metrics are not supported: use http/protobuf or JSON, and turn the metrics exporter off.

Set it up

Set these environment variables for your app. The SDK adds /v1/traces and /v1/logs to the endpoint:

.env
OTEL_EXPORTER_OTLP_ENDPOINT=https://app.lampwick.dev
OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
OTEL_EXPORTER_OTLP_HEADERS=x-lampwick-token=YOUR_PROJECT_TOKEN
OTEL_TRACES_EXPORTER=otlp
OTEL_LOGS_EXPORTER=otlp
OTEL_METRICS_EXPORTER=none
OTEL_SERVICE_NAME=shop-api

YOUR_PROJECT_TOKEN is the project's ingest token, from the Connect your app card on its Settings page. OTEL_EXPORTER_OTLP_PROTOCOL matters for Python and .NET, which default to gRPC. Set service.version in OTEL_RESOURCE_ATTRIBUTES and it shows as the deploy.

Through an OpenTelemetry Collector

Already run a Collector? Add Lampwick as an exporter:

YAML
exporters:
  otlphttp/lampwick:
    endpoint: https://app.lampwick.dev
    headers:
      x-lampwick-token: ${env:LAMPWICK_TOKEN}
service:
  pipelines:
    traces: { receivers: [otlp], processors: [batch], exporters: [otlphttp/lampwick] }
    logs: { receivers: [otlp], processors: [batch], exporters: [otlphttp/lampwick] }

Let your agent do it

Send this app's OpenTelemetry traces and logs to Lampwick. Use OTLP over HTTP (http/protobuf) to https://app.lampwick.dev with the header x-lampwick-token set from the LAMPWICK_TOKEN environment variable, turn the metrics exporter off, and set OTEL_SERVICE_NAME. Keep the token out of git and the chat. Then make one request to the app and tell me which spans it exported.

Next step

The OpenTelemetry docs have the full mapping, the limits and troubleshooting. Tested setups per language: Node.js, Next.js and Python. Each stored record counts as one event, as with HTTP ingest; the free plan has 500k events a month.