Socket
Socket
Sign inDemoInstall

@sentry/node

Package Overview
Dependencies
Maintainers
11
Versions
510
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@sentry/node

Sentry Node SDK using OpenTelemetry for performance instrumentation


Version published
Weekly downloads
5.7M
decreased by-5.09%
Maintainers
11
Install size
19.2 MB
Created
Weekly downloads
 

Package description

What is @sentry/node?

The @sentry/node package is a tool designed for real-time monitoring and fixing crashes in Node.js applications. It provides error tracking and performance monitoring, helping developers to quickly identify, diagnose, and fix problems in their applications. Sentry integrates seamlessly with your existing codebase, offering a range of features to enhance application reliability and user experience.

What are @sentry/node's main functionalities?

Error Tracking

Automatically capture exceptions and errors in your Node.js applications. The code initializes Sentry with your project's DSN and demonstrates how an uncaught exception is automatically reported to Sentry.

const Sentry = require('@sentry/node');
Sentry.init({ dsn: 'YOUR_DSN_HERE' });

app.get('/', function mainHandler(req, res) {
  throw new Error('Broke!');
});

Performance Monitoring

Track the performance of your application, including request times and slow operations. This code sample starts a transaction, simulates an operation with a timeout, and then finishes the transaction, which is then reported to Sentry for performance analysis.

const Sentry = require('@sentry/node');
const transaction = Sentry.startTransaction({ op: 'test', name: 'My First Test Transaction' });

setTimeout(() => {
  transaction.finish();
}, 99);

Custom Event Capturing

Send custom messages or events to Sentry. This is useful for capturing non-exception events that are significant for your application's health monitoring and diagnostics.

const Sentry = require('@sentry/node');

Sentry.captureMessage('Something went wrong', 'error');

Other packages similar to @sentry/node

Changelog

Source

8.16.0

Important Changes

  • feat(nextjs): Use spans generated by Next.js for App Router (#12729)

Previously, the @sentry/nextjs SDK automatically recorded spans in the form of transactions for each of your top-level server components (pages, layouts, ...). This approach had a few drawbacks, the main ones being that traces didn't have a root span, and more importantly, if you had data stream to the client, its duration was not captured because the server component spans had finished before the data could finish streaming.

With this release, we will capture the duration of App Router requests in their entirety as a single transaction with server component spans being descendants of that transaction. This means you will get more data that is also more accurate. Note that this does not apply to the Edge runtime. For the Edge runtime, the SDK will emit transactions as it has before.

Generally speaking, this change means that you will see less transactions and more spans in Sentry. You will no longer receive server component transactions like Page Server Component (/path/to/route) (unless using the Edge runtime), and you will instead receive transactions for your App Router SSR requests that look like GET /path/to/route.

If you are on Sentry SaaS, this may have an effect on your quota consumption: Less transactions, more spans.

  • - feat(nestjs): Add nest cron monitoring support (#12781)

The @sentry/nestjs SDK now includes a @SentryCron decorator that can be used to augment the native NestJS @Cron decorator to send check-ins to Sentry before and after each cron job run:

import { Cron } from '@nestjs/schedule';
import { SentryCron, MonitorConfig } from '@sentry/nestjs';
import type { MonitorConfig } from '@sentry/types';

const monitorConfig: MonitorConfig = {
  schedule: {
    type: 'crontab',
    value: '* * * * *',
  },
  checkinMargin: 2, // In minutes. Optional.
  maxRuntime: 10, // In minutes. Optional.
  timezone: 'America/Los_Angeles', // Optional.
};

export class MyCronService {
  @Cron('* * * * *')
  @SentryCron('my-monitor-slug', monitorConfig)
  handleCron() {
    // Your cron job logic here
  }
}

Other Changes

  • feat(node): Allow to pass instrumentation config to httpIntegration (#12761)
  • feat(nuxt): Add server error hook (#12796)
  • feat(nuxt): Inject sentry config with Nuxt addPluginTemplate (#12760)
  • fix: Apply stack frame metadata before event processors (#12799)
  • fix(feedback): Add missing h import in ScreenshotEditor (#12784)
  • fix(node): Ensure autoSessionTracking is enabled by default (#12790)
  • ref(feedback): Let CropCorner inherit the existing h prop (#12814)
  • ref(otel): Ensure we never swallow args for ContextManager (#12798)

Readme

Source

Sentry

Official Sentry SDK for Node

npm version npm dm npm dt

Installation

npm install @sentry/node

# Or yarn
yarn add @sentry/node

Usage

// CJS Syntax
const Sentry = require('@sentry/node');
// ESM Syntax
import * as Sentry from '@sentry/node';

Sentry.init({
  dsn: '__DSN__',
  // ...
});

Note that it is necessary to initialize Sentry before you import any package that may be instrumented by us.

More information on how to set up Sentry for Node in v8.

ESM Support

Due to the way OpenTelemetry handles instrumentation, this only works out of the box for CommonJS (require) applications.

There is experimental support for running OpenTelemetry with ESM ("type": "module"):

node --experimental-loader=@opentelemetry/instrumentation/hook.mjs ./app.js

You'll need to install @opentelemetry/instrumentation in your app to ensure this works.

See OpenTelemetry Instrumentation Docs for details on this - but note that this is a) experimental, and b) does not work with all integrations.

FAQs

Package last updated on 09 Jul 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc