LogSure

Tracing with OpenTelemetry

Any OpenTelemetry SDK or Collector can send traces and logs to LogSure over OTLP/HTTP. Each app gets its traces as waterfalls, its logs with a live tail, and each service's rate, errors and latency.

OTLP over HTTP only, with http/protobuf or http/json, plain or gzip. There is no gRPC yet, and metrics are coming: /_care/v1/metrics answers 501 for now.

Point the exporter

Use your app's own host, which routes /_care/ to LogSure (Add the tracker), or the LogSure server's host, and the app's server key:

export OTEL_EXPORTER_OTLP_ENDPOINT=https://app.example.com/_care
export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
export OTEL_EXPORTER_OTLP_HEADERS=x-logsure-key=cc_your_server_key
export OTEL_SERVICE_NAME=checkout

The exporter adds /v1/traces and /v1/logs itself. Authorization: Bearer <key> works as well as x-logsure-key.

In a Collector, use the otlphttp exporter:

exporters:
  otlphttp/logsure:
    endpoint: https://app.example.com/_care
    headers:
      x-logsure-key: ${env:LOGSURE_KEY}

service:
  pipelines:
    traces: { receivers: [otlp], exporters: [otlphttp/logsure] }
    logs:   { receivers: [otlp], exporters: [otlphttp/logsure] }

Traces

A checkout request as a waterfall of 13 spans across four services, each indented under its parent, with its logs below.

Logs

Search logs by words, severity (a number, or trace, debug, info, warn, error, fatal), service, trace or attribute, newest first. Live follows new ones as they arrive (GET …/logs/tail is a server-sent event stream). A log with a trace opens it.

Services

Six services with their request rate, error rate, p50, p95 and p99, and one service's latency and requests per hour.

Each service's requests a minute, error rate and p50, p95 and p99 latency over the window, bucket by bucket, and its 50 busiest operations. They are counted from server, consumer and root spans.

Sampling, caps and retention

Sample ratePer app, from 0 to 1, in the app's tracing settings
Denied attributesKeys never stored, per app. Credentials, cookies and authorization headers are never stored anyway, and values are scrubbed like error reports.
SPAN_DAILY_CAP, LOG_DAILY_CAPSpans and logs kept per app per UTC day, a million each by default. Past that, the exporter is told how many were rejected.
TRACE_RETENTION_DAYS, LOG_RETENTION_DAYSHow long spans (7 days) and logs (14 days) are kept

Tracing runs on the same server and database as everything else, built for small and medium volume. High-volume tracing is what the multi-node cluster is for.

The same is in the API (tracing), the terminal (:traces, :logs, :services) and over MCP (list_traces, get_trace, search_logs, get_service_stats, set_tracing_settings).