Postgres.js

Adds instrumentation for the postgres (postgres.js) library.

Available since: v10.41.0

Import name: Sentry.instrumentPostgresJsSql

The instrumentPostgresJsSql helper adds instrumentation for the postgres (postgres.js) library to capture spans by wrapping a postgres.js sql tagged-template instance. You need to manually wrap your sql instance with this helper:

Copied
import postgres from "postgres";
import * as Sentry from "@sentry/cloudflare";

export default Sentry.withSentry((env) => ({ dsn: "__DSN__" }), {
  async fetch(request, env, ctx) {
    const sql = Sentry.instrumentPostgresJsSql(postgres(env.DATABASE_URL));

    // All queries now create Sentry spans
    const users = await sql`SELECT * FROM users WHERE id = ${userId}`;
    return Response.json(users);
  },
});

Type: boolean

Whether the instrumentation requires a parent span to create child spans. When set to true, spans are only created if there is an active parent span in the current scope.

Default: true

Type: (span: Span, sanitizedSqlQuery: string, postgresConnectionContext?: PostgresConnectionContext) => void

A hook called before each span is started. Use it to set additional attributes or modify the span.

Copied
const sql = Sentry.instrumentPostgresJsSql(postgres(env.DATABASE_URL), {
  requestHook(span, query) {
    span.setAttribute("custom.query", query);
  },
});
Was this helpful?
Help improve this content
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").