Skip to main content
The Fly log shipper sends the logs of every app in a Fly.io organization to Squasher. Lines at error level create issues. For stack traces and spans, also use OpenTelemetry or an SDK in your apps.

Prerequisites

  • The fly CLI, signed in to the organization.
  • An ingest key and the project ID. See Create an ingest key.

Set up the log shipper

1

Create the shipper app

2

Set the secrets

Replace <org> with your organization slug from fly orgs list.
The shipper sends HTTP_TOKEN as an Authorization: Bearer header. Log lines have no environment, so environment in the URL sets it. Automatic AI triage starts only for issues with an enabled environment.
3

Deploy it

What Squasher keeps from each record

When log.level is info, Squasher reads the level from the message: level=error, a JSON "level" field, a leading word such as ERROR or [WARN], or a stack trace. Lines at error level or above create issues.

Send errors from your apps

Set the OpenTelemetry variables as secrets on each app that must create issues:
Then follow OpenTelemetry for your language. For Node.js, you can use the Node.js SDK instead.

Verify

  1. Select Logs in the sidebar in Squasher. Lines from your apps appear with the Fly.io app name as the service.
  2. Log one line that starts with ERROR, or record one span with ERROR status in an app that uses OpenTelemetry.
  3. Select Issues in the sidebar. The error is at the top of the list.

Limits

  • Log lines from the shipper have no environment unless you set environment in HTTP_URL.
  • The shipper sends logs for the apps in the organization that ACCESS_TOKEN can read.

Next steps

OpenTelemetry

Send error spans and logs with levels.

Drain record format

See how Squasher reads every drain record.