Skip to main content

SentryPlugin

SentryPlugin

This plugin integrates the Sentry error tracking & performance monitoring service with your Vendure server. In addition to capturing errors, it also provides built-in support for tracing as well as enriching your Sentry events with additional context about the request.

Pre-requisites

This plugin depends on access to Sentry, which can be self-hosted or used as a cloud service.

If using the hosted SaaS option, you must have a Sentry account and a project set up (sign up here). When setting up your project, select the "Node.js" platform and no framework.

Once set up, you will be given a Data Source Name (DSN) which you will need to provide to the plugin.

Installation

Install this plugin as well as the @sentry/node package:

npm install --save @vendure/sentry-plugin @sentry/node

Configuration

Before using the plugin, you must configure it with the DSN provided by Sentry:

import { VendureConfig } from '@vendure/core';
import { SentryPlugin } from '@vendure/sentry-plugin';

export const config: VendureConfig = {
// ...
plugins: [
// ...
SentryPlugin.init({
dsn: process.env.SENTRY_DSN,
// Optional configuration
includeErrorTestMutation: true,
enableTracing: true,
// you can also pass in any of the options from @sentry/node
// for instance:
tracesSampleRate: 1.0,
}),
],
};

Tracing

This plugin includes built-in support for tracing, which allows you to see the performance of your GraphQL resolvers in the Sentry dashboard. To enable tracing, set the enableTracing option to true as shown above.

Instrumenting your own code

You may want to add your own custom spans to your code. To do so, you can use the Sentry object just as you would in any Node application. For example:

import * as Sentry from "@sentry/node";

export class MyService {
async myMethod() {
Sentry.setContext('My Custom Context,{
key: 'value',
});
}
}

Error test mutation

To test whether your Sentry configuration is working correctly, you can set the includeErrorTestMutation option to true. This will add a mutation to the Admin API which will throw an error of the type specified in the errorType argument. For example:

mutation CreateTestError {
createTestError(errorType: DATABASE_ERROR)
}

You should then be able to see the error in your Sentry dashboard (it may take a couple of minutes to appear).

Signature
class SentryPlugin implements NestModule {
static options: SentryPluginOptions = {} as any;
configure(consumer: MiddlewareConsumer) => any;
init(options: SentryPluginOptions) => ;
}
  • Implements: NestModule

options

configure

method
(consumer: MiddlewareConsumer) => any

init

method
(options: SentryPluginOptions) =>