LogSure

Tracing

Follow a request through every service.

Point any OpenTelemetry SDK or Collector at LogSure. See each trace as a waterfall, tail the logs live, and watch every service's p50, p95 and p99.

One checkout request as a waterfall: 13 spans across the checkout API, inventory, payments and the order worker, each indented under its parent with a bar for when it ran, and the request's logs below.

Find the slow one.

Every trace with its root span, service, duration, spans and status. Filter by service, status, duration or any attribute, and sort by the slowest.

servicenamestatusminDurationattrsort=duration
The traces of an app, newest first: GET /search, POST /api/checkout, GET /products/{slug} and GET /api/cart, each with its service, span count, a duration bar, the status and when it ran.

Errors join their trace.

An exception on a span, or a log at ERROR, becomes an error issue that links back here. The waterfall shows which span broke, and the logs say what it said.

Learn more about errors
A failed checkout: the payment service timed out after two seconds, its spans striped in red, with the error issue it raised and its logs.

Logs, live.

Search logs by words, level, service or attribute, or press Live and watch them arrive. Every log with a trace opens it.

Logs of an app over 24 hours, newest first: time, level, service and message, with a Live button to follow new ones.

Every service at a glance.

Requests a minute, error rate and p50, p95 and p99 latency per service, hour by hour, and its busiest operations.

Six services with their request rate, error rate, p50, p95 and p99 and a sparkline, and the storefront's latency and requests per hour over 24 hours.

Kept in check.

SamplingSet a sample rate per app, and deny attributes you never want stored.
ScrubbedCredentials, cookies and authorization headers are never stored; values are scrubbed like error reports.
CappedA daily cap of spans and logs per app; past it, the exporter is told how many were rejected.
KeptSpans for 7 days and logs for 14 by default, both set by the server.

OTLP over HTTP, with Protobuf or JSON. There is no gRPC yet, and metrics are coming.

How it works.

Point the exporter

Three variables for any OpenTelemetry SDK. It adds /v1/traces and /v1/logs itself.

OTEL_EXPORTER_OTLP_ENDPOINT=https://app.example.com/_care
OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
OTEL_EXPORTER_OTLP_HEADERS=x-logsure-key=$KEY

Or a Collector

Use the otlphttp exporter with the same endpoint and header.

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

Read it anywhere

The console, the iPhone and Mac apps, the terminal and your AI assistant.

logsure                # then :traces, :logs, :services
# or ask over MCP
list_traces  get_trace
search_logs  get_service_stats