Send your first event

OpenFault speaks the Sentry wire protocol. Keep your Sentry SDK and change the DSN. That is the whole migration.

Get a DSN

Create a project in the setup wizard or in Settings → Projects. The project page shows its DSN, shaped like:

https://<key>@errors.example.com/<project-id>

The host comes from OPENFAULT_BASE_URL. If the DSN shows http://localhost:8080, set that variable first.

Rails (sentry-ruby)

# config/initializers/sentry.rb
Sentry.init do |config|
  config.dsn = "https://<key>@errors.example.com/1"
end

Next.js (@sentry/nextjs)

Set the DSN in all three config files: sentry.client.config.ts, sentry.server.config.ts and sentry.edge.config.ts.

Sentry.init({
  dsn: "https://<key>@errors.example.com/1",
});

For readable stack traces from minified code, upload source maps. See Source maps.

Node (@sentry/node)

const Sentry = require("@sentry/node");
Sentry.init({ dsn: "https://<key>@errors.example.com/1" });

Python (sentry-sdk)

import sentry_sdk
sentry_sdk.init(dsn="https://<key>@errors.example.com/1")

Check it landed

Throw something, then open the project. A new issue shows up within a second or two.

Sentry.captureException(new Error("hello from OpenFault"));

What we drop

OpenFault keeps errors. Only event envelope items are stored. Transactions, spans, sessions, replays, profiles, attachments, check-ins, logs, metrics, client reports and feedback are accepted and thrown away, with a 200 so the SDK is happy.

Every response carries X-Sentry-Rate-Limits: 86400:transaction;span;profile;replay;session:organization, so SDKs stop sending tracing, replay, profiling and session data on their own. You can leave tracesSampleRate alone; it just stops costing bandwidth.

Limits