Skip to content

Traces, logs & metrics

Stop guessing why it's slow.Look at the request.

Follow a slow request through every service it touched, with the logs it wrote and the metrics it moved right beside it.

trace 4bf92f35 · 5 spans · 3 services0 ─── 1.24s

payments

payments.charge

payment.provider
psp-eu
retry.count
2
deploy.version
v2.14

Logs of this span

  • psp latency 840ms, retrying (1/2)
  • deadline exceeded after 960ms

Payments retried the provider twice, and only since deploy v2.14. Most of the 1.24 s is spent here.

Click a span to see its attributes and logs, and what they say about this checkout.

Debugging with fewer tabs open.

Three bugs you have probably chased this quarter, and the steps each one takes.

Today

5 steps · 5 tools
  1. 1Slackask which endpoint and which customer
  2. 2Grafanafind the latency panel, guess the minute
  3. 3kubectlgrep logs on gateway, cart and payments
  4. 4spreadsheetline up timestamps by hand
  5. 5gitdiff the last deploys, hope for a match

With FerrisTrace

2 steps · 1 tool
  1. 1FerrisTracefilter slow requests on /checkout
  2. 2FerrisTraceopen one and see the slow span and its deploy

You start from the request that was slow and work back from there.

Send what you already have.

FerrisTrace takes plain OpenTelemetry. Pick your stack to see the setup, the same commands you would run for any OTLP backend.

$ npm install @opentelemetry/auto-instrumentations-node
$ export OTEL_EXPORTER_OTLP_ENDPOINT=https://your-server:4318
$ export OTEL_EXPORTER_OTLP_HEADERS="authorization=Bearer cmt_ik_…"
$ export OTEL_SERVICE_NAME=checkout
$ node --require @opentelemetry/auto-instrumentations-node/register app.js
Stock OpenTelemetry. Your code stays as it is.

FerrisTrace · livewaiting for data

    Press "Run it" to start the service.

    What you get.

    • Waterfall by serviceSee where the time went, coloured by service, with each error on the span that threw it.
    • Search any attributeAttributes keep their types. Filter on status, duration, user, version or anything else you send.
    • Logs with a trace idFilter by severity, text or trace, and click a line to open the request behind it.
    • Metrics that open tracesA chart per attribute set, linked to the traces recorded in the same minute.
    • Keyboard-firstG T, J K, Enter and / get you around. Handy on your tenth visit of the day.
    • OpenTelemetry onlyThere is no FerrisTrace SDK. Your instrumentation keeps working if you ever switch backends.

    Find your slowest request in the next ten minutes.

    Cloud is free while we are in beta. Self-hosting takes one docker run.