Actionable insights to resolve NestJS performance bottlenecks and errors. Improve your NestJS monitoring workflow with a full view of releases so you can mark errors as resolved and prioritize live issues.
Add @sentry/nestjs
as a dependency:
npm install --save @sentry/nestjs
You need to create a file named instrument.js
that imports and initializes Sentry:
import * as Sentry from '@sentry/nestjs'; // Ensure to call this before importing any other modules! Sentry.init({ dsn: 'https://examplePublicKey@o0.ingest.sentry.io/0', // Add Tracing by setting tracesSampleRate // We recommend adjusting this value in production tracesSampleRate: 1.0, });
You need to require or import the instrument.js
file before requiring any other modules in your application. This is necessary to ensure that Sentry can automatically instrument all modules in your application:
// Import this first! import './instrument'; // Now import other modules import { NestFactory } from "@nestjs/core"; import { AppModule } from "./app.module"; async function bootstrap() { const app = await NestFactory.create(AppModule); await app.listen(3000); } bootstrap();
Afterwards, add the SentryModule
as a root module to your main module:
import { Module } from "@nestjs/common"; import { SentryModule } from "@sentry/nestjs/setup"; import { AppController } from "./app.controller"; import { AppService } from "./app.service"; @Module({ imports: [ SentryModule.forRoot(), // ...other modules ], controllers: [AppController], providers: [AppService], }) export class AppModule {}
In case you are using a global catch-all exception filter (which is either a filter registered with app.useGlobalFilters()
or a filter registered in your app module providers annotated with an empty @Catch()
decorator), add a @WithSentry()
decorator to the catch()
method of this global error filter. This decorator will report all unexpected errors that are received by your global error filter to Sentry:
import { Catch, ExceptionFilter } from '@nestjs/common'; import { WithSentry } from '@sentry/nestjs'; @Catch() export class YourCatchAllExceptionFilter implements ExceptionFilter { @WithSentry() catch(exception, host): void { // your implementation here } }
In case you do not have a global catch-all exception filter, add the SentryGlobalFilter
to the providers of your main module. This filter will report all unhandled errors that are not caught by any other error filter to Sentry. Important: The SentryGlobalFilter
needs to be registered before any other exception filters.
import { Module } from '@nestjs/common'; import { APP_FILTER } from '@nestjs/core'; import { SentryGlobalFilter } from '@sentry/nestjs/setup'; @Module({ providers: [ { provide: APP_FILTER, useClass: SentryGlobalFilter, }, // ..other providers ], }) export class AppModule {}
Check our documentation for the latest instructions.
See all platformsSentry works with OpenTelemetry to provide a simple configuration process, and rich distributed tracing context across all the libraries and frameworks used in your application. Regardless of your chosen tech stack.
Quickly identify NestJS performance issues and view full end-to-end distributed trace to see the exact, poor-performing API call and surface any related errors.
See the NestJS source code at each frame instead of settings for just line and column numbers. Get proper asynchronous context tracking — like thread-local store — in a way that fits Node’s concurrency model.
See what the app was doing when the NestJS error occurred: HTTP requests, database queries, console loft statements, etc.
Profiling lets you see what parts of your code are consuming the most resources, like CPU or memory, in your application— so you can optimize them before end user experience is impacted. Test your application performance in any environment, including in production, without writing manual tests or extensive troubleshooting.
Try ProfilingAggregate errors by factors like request details, user ID, and event level to see what’s new, a priority, or a trend.
Assign custom key-value tags to reproduce the error environment specific to your application, business, and users.
Find answers to key questions: Has an error with the same stack occurred before? In which app release did the NestJS bug occur?
The average cost of network downtime is around $5,600 per minute — or $300,000 per hour.
1 out of 5 online shoppers will abandon their cart because the transaction process was too slow.
On average, a two-second slowdown in page load decreases revenues by 4.3 percent.
Sentry supports every major language, framework, and library. You can browse each of them here.
You can get started for free. Pricing depends on the number of monthly events, transactions, and attachments that you send Sentry. For more details, visit our pricing page.
Sentry doesn’t impact a web site’s performance.
If you look at the configuration options for when you initialize Sentry in your code, you’ll see there’s nothing regarding minimizing its impact on your app’s performance. This is because our team of SDK engineers already developed Sentry with this in mind.
Sentry is a listener/handler for errors that asynchronously sends out the error/event to Sentry.io. This is non-blocking. The error/event only goes out if this is an error.
Global handlers have almost no impact as well, as they are native APIs provided by the browsers.
Here’s a quick look at how Sentry handles your personal information (PII).
×We collect PII about people browsing our website, users of the Sentry service, prospective customers, and people who otherwise interact with us.
What if my PII is included in data sent to Sentry by a Sentry customer (e.g., someone using Sentry to monitor their app)? In this case you have to contact the Sentry customer (e.g., the maker of the app). We do not control the data that is sent to us through the Sentry service for the purposes of application monitoring.
Am I included?We may disclose your PII to the following type of recipients:
You may have the following rights related to your PII:
If you have any questions or concerns about your privacy at Sentry, please email us at compliance@sentry.io.
If you are a California resident, see our Supplemental notice.