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).
class SentryPlugin implements NestModule {
static options: SentryPluginOptions = {} as any;
configure(consumer: MiddlewareConsumer) => any;
init(options: SentryPluginOptions) => ;
}
- Implements:
NestModule
options
configure
(consumer: MiddlewareConsumer) => any
init
(options: SentryPluginOptions) =>