Token导航 LogoToken导航

Agent Skill · 研究检索

sentry-node-sdk(Sentry node SDK 搜索)

sentry-node-sdk 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

sentry-node-sdk 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为操作浏览器;许可证信息还不明确,第三方扫描已通过,按安装量在研究检索类的 73,675 个 Skill 里排第 7,030。

总安装 20,180周安装 858GitHub Stars 156下载 7,070核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:sentry-node-sdk(Sentry node SDK 搜索)
来源仓库:https://github.com/getsentry/sentry-for-ai
仓库路径:skills/sentry-node-sdk
安装命令:
npx skills add https://github.com/getsentry/sentry-for-ai --skill sentry-node-sdk
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/getsentry/sentry-for-ai --skill sentry-node-sdk

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

用于查找、检索和筛选 Sentry Node.js SDK 相关信息。适合在后端服务中集成错误监控时快速获取配置指南。通过 GitHub 安装后,按关键词返回官方文档片段。需注意 SDK 版本与运行时环境的兼容性。sentry-node-sdk 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

来源仓库内路径:skills/sentry-node-sdk

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/getsentry/sentry-for-ai --skill sentry-node-sd…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要操作浏览器,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

sentry-node-sdk 怎么安装?

在终端执行 npx skills add https://github.com/getsentry/sentry-for-ai --skill sentry-node-sdk。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

sentry-node-sdk 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

sentry-node-sdk 需要什么权限?

权限级别是操作浏览器。该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

sentry-node-sdk 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

sentry-node-sdk 用的人多吗?

公开数据是累计安装 20,180 次,近一周安装 858 次,下载 7,070 次,GitHub 156 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

sentry-node-sdk 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
sentry-node-sdk

Sentry node SDK 搜索 · 本页

20,180156操作浏览器未明确通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

All Skills > SDK Setup > Node.js / Bun / Deno SDK

Sentry Node.js / Bun / Deno SDK

Opinionated wizard that scans your project and guides you through complete Sentry setup for server-side JavaScript and TypeScript runtimes: Node.js, Bun, and Deno.

Invoke This Skill When

  • User asks to "add Sentry to Node.js", "Bun", or "Deno"
  • User wants to install or configure @sentry/node, @sentry/bun, or @sentry/deno
  • User wants error monitoring, tracing, logging, profiling, crons, metrics, or AI monitoring for a backend JS/TS app
  • User asks about instrument.js, --import./instrument.mjs, bun --preload, or npm:@sentry/deno
  • User wants to monitor Express, Fastify, Koa, Hapi, Connect, Bun.serve(), or Deno.serve()
NestJS? Use sentry-nestjs-sdk instead — it uses @sentry/nestjs with NestJS-native decorators and filters. Next.js? Use sentry-nextjs-sdk instead — it handles the three-runtime architecture (browser, server, edge).
Note: SDK versions below reflect current Sentry docs at time of writing (@sentry/node ≥10.42.0, @sentry/bun ≥10.42.0, @sentry/deno ≥10.42.0). Always verify against docs.sentry.io/platforms/javascript/guides/node/ before implementing.

Phase 1: Detect

Run these commands to identify the runtime, framework, and existing Sentry setup:

# Detect runtime
bun --version 2>/dev/null && echo "Bun detected"
deno --version 2>/dev/null && echo "Deno detected"
node --version 2>/dev/null && echo "Node.js detected"

# Detect existing Sentry packages
cat package.json 2>/dev/null | grep -E '"@sentry/'
cat deno.json deno.jsonc 2>/dev/null | grep -i sentry

# Detect Node.js framework
cat package.json 2>/dev/null | grep -E '"express"|"fastify"|"@hapi/hapi"|"koa"|"@nestjs/core"|"connect"'

# Detect Bun-specific frameworks
cat package.json 2>/dev/null | grep -E '"elysia"|"hono"'

# Detect Deno frameworks (deno.json imports)
cat deno.json deno.jsonc 2>/dev/null | grep -E '"oak"|"hono"|"fresh"'

# Detect module system (Node.js)
cat package.json 2>/dev/null | grep '"type"'
ls *.mjs *.cjs 2>/dev/null | head -5

# Detect existing instrument file
ls instrument.js instrument.mjs instrument.ts instrument.cjs 2>/dev/null

# Detect logging libraries
cat package.json 2>/dev/null | grep -E '"winston"|"pino"|"bunyan"'

# Detect cron / scheduling
cat package.json 2>/dev/null | grep -E '"node-cron"|"cron"|"agenda"|"bull"|"bullmq"'

# Detect AI / LLM usage
cat package.json 2>/dev/null | grep -E '"openai"|"@anthropic-ai"|"@langchain"|"@vercel/ai"|"@google/generative-ai"'

# Detect OpenTelemetry tracing
cat package.json 2>/dev/null | grep -E '"@opentelemetry/sdk-node"|"@opentelemetry/sdk-trace-node"|"@opentelemetry/sdk-trace-base"'
grep -rn "NodeTracerProvider\|trace\.getTracer\|startActiveSpan" \
  --include="*.ts" --include="*.js" --include="*.mjs" 2>/dev/null | head -5

# Check for companion frontend
ls frontend/ web/ client/ ui/ 2>/dev/null
cat package.json 2>/dev/null | grep -E '"react"|"vue"|"svelte"|"next"'

What to determine:

QuestionImpact
Which runtime? (Node.js / Bun / Deno)Determines package, init pattern, and preload flag
Node.js: ESM or CJS?ESM requires --import./instrument.mjs; CJS uses require("./instrument")
Framework detected?Determines which error handler to register
@sentry/* already installed?Skip install, go straight to feature config
instrument.js / instrument.mjs already exists?Merge into it rather than overwrite
Logging library detected?Recommend Sentry Logs
Cron / job scheduler detected?Recommend Crons monitoring
AI library detected?Recommend AI Monitoring
OpenTelemetry tracing detected?Use OTLP path instead of native tracing
Companion frontend found?Trigger Phase 4 cross-link

Phase 2: Recommend

Present a concrete recommendation based on what you found. Don't ask open-ended questions — lead with a proposal:

Route from OTel detection:

  • OTel tracing detected (@opentelemetry/sdk-node or @opentelemetry/sdk-trace-node in package.json, or NodeTracerProvider in source) → use OTLP path: otlpIntegration() via @sentry/node-core/light; do not set tracesSampleRate; Sentry links errors to OTel traces automatically

Recommended (core coverage):

  • ✅ Error Monitoring — always; captures unhandled exceptions, promise rejections, and framework errors
  • ✅ Tracing — automatic HTTP, DB, and queue instrumentation via OpenTelemetry

Optional (enhanced observability):

  • ⚡ Logging — structured logs via Sentry.logger.*; recommend when winston/pino/bunyan or log search is needed
  • ⚡ Profiling — continuous CPU profiling (Node.js only; not available on Bun or Deno); not available with OTLP path
  • ⚡ AI Monitoring — OpenAI, Anthropic, LangChain, Vercel AI SDK; recommend when AI/LLM calls detected
  • ⚡ Crons — detect missed or failed scheduled jobs; recommend when node-cron, Bull, or Agenda is detected
  • ⚡ Metrics — custom counters, gauges, distributions; recommend when custom KPIs needed
  • ⚡ Runtime Metrics — automatic collection of memory, CPU, and event loop metrics; nodeRuntimeMetricsIntegration() (Node.js) / bunRuntimeMetricsIntegration() (Bun)

Recommendation logic:

FeatureRecommend when...
Error MonitoringAlways — non-negotiable baseline
OTLP IntegrationOTel tracing detected — replaces native Tracing
TracingAlways for server apps — HTTP spans + DB spans are high-value; skip if OTel tracing detected
LoggingApp uses winston, pino, bunyan, or needs log-to-trace correlation
ProfilingNode.js only — performance-critical service; native addon compatible; skip if OTel tracing detected (requires tracesSampleRate, incompatible with OTLP)
AI MonitoringApp calls OpenAI, Anthropic, LangChain, Vercel AI, or Google GenAI
CronsApp uses node-cron, Bull, BullMQ, Agenda, or any scheduled task pattern
MetricsApp needs custom counters, gauges, or histograms
Runtime MetricsAny Node.js or Bun service wanting automatic memory/CPU/event-loop visibility

OTel tracing detected: *"I see OpenTelemetry tracing in the project. I recommend Sentry's OTLP integration for tracing (via your existing OTel setup) + Error Monitoring + Sentry Logging [+ Metrics/Crons/AI Monitoring if applicable]. Shall I proceed?"*

No OTel: *"I recommend setting up Error Monitoring + Tracing. Want me to also add Logging or Profiling?"*


Phase 3: Guide

Runtime: Node.js

Option 1: Wizard (Recommended for Node.js)
You need to run this yourself — the wizard opens a browser for login and requires interactive input that the agent can't handle. Copy-paste into your terminal: `` npx @sentry/wizard@latest -i node ` It handles login, org/project selection, SDK installation, instrument.js` creation, and package.json script updates. Once it finishes, come back and skip to Verification.

If the user skips the wizard, proceed with Option 2 (Manual Setup) below.


Option 2: Manual Setup — Node.js
Install
npm install @sentry/node --save
# or
yarn add @sentry/node
# or
pnpm add @sentry/node
Create the Instrument File

CommonJS (instrument.js):

// instrument.js — must be loaded before all other modules
const Sentry = require("@sentry/node");

Sentry.init({
  dsn: process.env.SENTRY_DSN ?? "___DSN___",

  sendDefaultPii: true,

  // 100% in dev, lower in production
  tracesSampleRate: process.env.NODE_ENV === "development" ? 1.0 : 0.1,

  // Capture local variable values in stack frames
  includeLocalVariables: true,

  enableLogs: true,
});

ESM (instrument.mjs):

// instrument.mjs — loaded via --import flag before any other module
import * as Sentry from "@sentry/node";

Sentry.init({
  dsn: process.env.SENTRY_DSN ?? "___DSN___",

  sendDefaultPii: true,
  tracesSampleRate: process.env.NODE_ENV === "development" ? 1.0 : 0.1,
  includeLocalVariables: true,
  enableLogs: true,
});
Start Your App with Sentry Loaded First

CommonJS — add require("./instrument") as the very first line of your entry file:

// app.js
require("./instrument"); // must be first

const express = require("express");
// ... rest of your app

ESM — use the --import flag so Sentry loads before all other modules (Node.js 18.19.0+ required):

node --import ./instrument.mjs app.mjs

Add to package.json scripts:

{
  "scripts": {
    "start": "node --import ./instrument.mjs server.mjs",
    "dev": "node --import ./instrument.mjs --watch server.mjs"
  }
}

Or via environment variable (useful for wrapping existing start commands):

NODE_OPTIONS="--import ./instrument.mjs" npm start
Framework Error Handlers

Register the Sentry error handler after all routes so it can capture framework errors:

Express:

const express = require("express");
const Sentry = require("@sentry/node");

const app = express();

// ... your routes

// Add AFTER all routes — captures 5xx errors by default
Sentry.setupExpressErrorHandler(app);

// Optional: capture 4xx errors too
// Sentry.setupExpressErrorHandler(app, {
//   shouldHandleError(error) { return error.status >= 400; },
// });

app.listen(3000);

Fastify:

const Fastify = require("fastify");
const Sentry = require("@sentry/node");

const fastify = Fastify();

// Add BEFORE routes (unlike Express!)
Sentry.setupFastifyErrorHandler(fastify);

// ... your routes

await fastify.listen({ port: 3000 });

Koa:

const Koa = require("koa");
const Sentry = require("@sentry/node");

const app = new Koa();

// Add as FIRST middleware (catches errors thrown by later middleware)
Sentry.setupKoaErrorHandler(app);

// ... your other middleware and routes

app.listen(3000);

Hapi (async — must await):

const Hapi = require("@hapi/hapi");
const Sentry = require("@sentry/node");

const server = Hapi.server({ port: 3000 });

// ... your routes

// Must await — Hapi registration is async
await Sentry.setupHapiErrorHandler(server);

await server.start();

Connect:

const connect = require("connect");
const Sentry = require("@sentry/node");

const app = connect();

// Add BEFORE routes (like Fastify and Koa)
Sentry.setupConnectErrorHandler(app);

// ... your middleware and routes

require("http").createServer(app).listen(3000);

NestJS — has its own dedicated skill with full coverage:

Use the sentry-nestjs-sdk skill instead. NestJS uses a separate package (@sentry/nestjs) with NestJS-native constructs: SentryModule.forRoot(), SentryGlobalFilter, @SentryTraced, @SentryCron decorators, and GraphQL/Microservices support. Load that skill for complete NestJS setup.

Vanilla Node.js http module — wrap request handler manually:

const http = require("http");
const Sentry = require("@sentry/node");

const server = http.createServer((req, res) => {
  Sentry.withIsolationScope(() => {
    try {
      // your handler
      res.end("OK");
    } catch (err) {
      Sentry.captureException(err);
      res.writeHead(500);
      res.end("Internal Server Error");
    }
  });
});

server.listen(3000);

Framework error handler summary:

FrameworkFunctionPlacementAsync?
ExpresssetupExpressErrorHandler(app)After all routesNo
FastifysetupFastifyErrorHandler(fastify)Before routesNo
KoasetupKoaErrorHandler(app)First middlewareNo
HapisetupHapiErrorHandler(server)Before server.start()Yes
ConnectsetupConnectErrorHandler(app)Before routesNo
NestJS→ Use sentry-nestjs-sdkDedicated skill—

Runtime: Bun

No wizard available for Bun. Manual setup only.
Install
bun add @sentry/bun
Create instrument.ts (or instrument.js)
// instrument.ts
import * as Sentry from "@sentry/bun";

Sentry.init({
  dsn: process.env.SENTRY_DSN ?? "___DSN___",

  sendDefaultPii: true,
  tracesSampleRate: process.env.NODE_ENV === "development" ? 1.0 : 0.1,
  enableLogs: true,
});
Start Your App with --preload
bun --preload ./instrument.ts server.ts

Add to package.json:

{
  "scripts": {
    "start": "bun --preload ./instrument.ts server.ts",
    "dev": "bun --watch --preload ./instrument.ts server.ts"
  }
}
Bun.serve() — Auto-Instrumentation

@sentry/bun automatically instruments Bun.serve() via JavaScript Proxy. No extra setup is required — just initialize with --preload and your Bun.serve() calls are traced:

// server.ts
const server = Bun.serve({
  port: 3000,
  fetch(req) {
    return new Response("Hello from Bun!");
  },
});
Framework Error Handlers on Bun

Bun can run Express, Fastify, Hono, and Elysia. Use the same @sentry/bun import and the @sentry/node error handler functions (re-exported by @sentry/bun):

import * as Sentry from "@sentry/bun";
import express from "express";

const app = express();
// ... routes
Sentry.setupExpressErrorHandler(app);
app.listen(3000);
Bun Feature Support
FeatureBun SupportNotes
Error Monitoring✅ FullSame API as Node
Tracing✅ Via @sentry/node OTelMost auto-instrumentations work
Logging✅ FullenableLogs: true + Sentry.logger.*
Profiling❌ Not available@sentry/profiling-node uses native addons incompatible with Bun
Metrics✅ FullSentry.metrics.*
Runtime Metrics✅ FullbunRuntimeMetricsIntegration() — memory, CPU, event loop (no event loop delay percentiles)
Crons✅ FullSentry.withMonitor()
AI Monitoring✅ FullOpenAI, Anthropic integrations work

Runtime: Deno

No wizard available for Deno. Manual setup only. Requires Deno 2.0+. Deno 1.x is not supported. Use npm: specifier. The deno.land/x/sentry registry is deprecated.
Install via deno.json (Recommended)
{
  "imports": {
    "@sentry/deno": "npm:@sentry/deno@10.42.0"
  }
}

Or import directly with the npm: specifier:

import * as Sentry from "npm:@sentry/deno";
Initialize — Add to Entry File
// main.ts — Sentry.init() must be called before any other code
import * as Sentry from "@sentry/deno";

Sentry.init({
  dsn: Deno.env.get("SENTRY_DSN") ?? "___DSN___",

  sendDefaultPii: true,
  tracesSampleRate: Deno.env.get("DENO_ENV") === "development" ? 1.0 : 0.1,
  enableLogs: true,
});

// Your application code follows
Deno.serve({ port: 8000 }, (req) => {
  return new Response("Hello from Deno!");
});
Unlike Node.js and Bun, Deno does not have a --preload or --import flag. Sentry must be the first import in your entry file.
Required Deno Permissions

The SDK requires network access to reach your Sentry ingest domain:

deno run \
  --allow-net=o<ORG_ID>.ingest.sentry.io \
  --allow-read=./src \
  --allow-env=SENTRY_DSN,SENTRY_RELEASE \
  main.ts

For development, --allow-all works but is not recommended for production.

Deno Cron Integration

Deno provides native cron scheduling. Use denoCronIntegration for automatic monitoring:

import * as Sentry from "@sentry/deno";
import { denoCronIntegration } from "@sentry/deno";

Sentry.init({
  dsn: Deno.env.get("SENTRY_DSN") ?? "___DSN___",
  integrations: [denoCronIntegration()],
});

// Cron is automatically monitored
Deno.cron("daily-cleanup", "0 0 * * *", () => {
  // cleanup logic
});
Deno Feature Support
FeatureDeno SupportNotes
Error Monitoring✅ FullUnhandled exceptions + captureException
Tracing✅ Custom OTelAutomatic spans for Deno.serve() and fetch
Logging✅ FullenableLogs: true + Sentry.logger.*
Profiling❌ Not availableNo profiling addon for Deno
Metrics✅ FullSentry.metrics.*
Runtime Metrics❌ Not availableNo runtime metrics integration for Deno
Crons✅ FulldenoCronIntegration() + Sentry.withMonitor()
AI Monitoring✅ PartialVercel AI SDK integration works; OpenAI/Anthropic via npm:

OTLP Integration (OTel-First Projects — Node.js Only)

Use this path only when OpenTelemetry tracing was detected in Phase 1 (e.g., @opentelemetry/sdk-node or @opentelemetry/sdk-trace-node in package.json). For projects without an existing OTel setup, use the standard @sentry/node path above.

The OTLP integration uses @sentry/node-core/light — a lightweight Sentry SDK that does not bundle its own OpenTelemetry. Instead, it hooks into the user's existing OTel TracerProvider and exports spans to Sentry via OTLP.

When to Use
ScenarioRecommended path
New project, no existing OTelStandard @sentry/node (above) — includes built-in OTel
Existing OTel setup, want Sentry tracing@sentry/node-core/light + otlpIntegration()
Existing OTel setup, sending to own Collector@sentry/node-core/light + otlpIntegration({collectorUrl})
Install
npm install @sentry/node-core @opentelemetry/api @opentelemetry/sdk-trace-node @opentelemetry/sdk-trace-base
# or
yarn add @sentry/node-core @opentelemetry/api @opentelemetry/sdk-trace-node @opentelemetry/sdk-trace-base
# or
pnpm add @sentry/node-core @opentelemetry/api @opentelemetry/sdk-trace-node @opentelemetry/sdk-trace-base
The @opentelemetry/* packages are peer dependencies. If the project already has them installed, skip duplicates.
Initialize
// instrument.mjs — load via --import flag before any other module
import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';
import * as Sentry from '@sentry/node-core/light';
import { otlpIntegration } from '@sentry/node-core/light/otlp';

// Register the user's OTel TracerProvider first
const provider = new NodeTracerProvider();
provider.register();

Sentry.init({
  dsn: process.env.SENTRY_DSN ?? '___DSN___',

  sendDefaultPii: true,
  enableLogs: true,

  // Do NOT set tracesSampleRate — OTel controls sampling
  integrations: [
    otlpIntegration({
      // Export OTel spans to Sentry via OTLP (default: true)
      setupOtlpTracesExporter: true,
    }),
  ],
});

With a custom Collector endpoint:

Sentry.init({
  dsn: process.env.SENTRY_DSN ?? '___DSN___',
  integrations: [
    otlpIntegration({
      collectorUrl: 'http://localhost:4318/v1/traces',
    }),
  ],
});
Start Your App

Same --import pattern as the standard Node.js setup:

node --import ./instrument.mjs app.mjs
Key Differences from Standard @sentry/node
Aspect@sentry/node (standard)@sentry/node-core/light (OTLP)
OTel bundled✅ Yes — built-in TracerProvider❌ No — uses your existing provider
Tracing controltracesSampleRate in Sentry.init()OTel SDK controls sampling
Auto-instrumentation✅ Built-in (HTTP, DB, etc.)❌ You manage OTel instrumentations
Profiling✅ Available❌ Not compatible
Error ↔ trace linking✅ Automatic✅ Automatic (via otlpIntegration)
Package sizeLarger (includes OTel)Smaller (light mode)

For Each Agreed Feature

Load the corresponding reference file and follow its steps:

FeatureReference fileLoad when...
Error Monitoringreferences/error-monitoring.mdAlways (baseline) — captures, scopes, enrichment, beforeSend
OTLP IntegrationSee OTLP Integration aboveOTel tracing detected — replaces native Tracing
Tracingreferences/tracing.mdOTel auto-instrumentation, custom spans, distributed tracing, sampling; skip if OTel tracing detected
Loggingreferences/logging.mdStructured logs, Sentry.logger.*, log-to-trace correlation
Profilingreferences/profiling.mdNode.js only — CPU profiling, Bun/Deno gaps documented; skip if OTel tracing detected
Metricsreferences/metrics.mdCustom counters, gauges, distributions
Runtime MetricsSee inline belowAutomatic memory, CPU, and event loop metrics for Node.js and Bun
Cronsreferences/crons.mdScheduled job monitoring, node-cron, Bull, Agenda, Deno.cron
AI MonitoringLoad sentry-setup-ai-monitoring skillOpenAI, Anthropic, LangChain, Vercel AI, Google GenAI

For each feature: read the reference file, follow its steps exactly, and verify before moving on.

Runtime Metrics

Automatically collect Node.js and Bun runtime health metrics (memory, CPU utilization, event loop delay/utilization, uptime) at a configurable interval. Metrics appear in Sentry's Metrics product under the node.runtime.* / bun.runtime.* namespace.

Node.js — add nodeRuntimeMetricsIntegration() to your instrument.js:

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

Sentry.init({
  dsn: process.env.SENTRY_DSN,
  integrations: [
    Sentry.nodeRuntimeMetricsIntegration(),
    // Optional: change collection interval (default 30 000 ms)
    // Sentry.nodeRuntimeMetricsIntegration({ collectionIntervalMs: 60_000 }),
  ],
});

Metrics collected by default: node.runtime.mem.rss, node.runtime.mem.heap_used, node.runtime.mem.heap_total, node.runtime.cpu.utilization, node.runtime.event_loop.delay.p50, node.runtime.event_loop.delay.p99, node.runtime.event_loop.utilization, node.runtime.process.uptime.

Bun — add bunRuntimeMetricsIntegration() to your instrument.ts:

import * as Sentry from "@sentry/bun";
import { bunRuntimeMetricsIntegration } from "@sentry/bun";

Sentry.init({
  dsn: process.env.SENTRY_DSN,
  integrations: [
    bunRuntimeMetricsIntegration(),
    // Optional: change collection interval (default 30 000 ms)
    // bunRuntimeMetricsIntegration({ collectionIntervalMs: 60_000 }),
  ],
});

Metrics collected: same as Node.js except no event loop delay percentiles (unavailable in Bun). Prefixed with bun.runtime.*.


Verification

After setup, verify Sentry is receiving events:

// Add temporarily to your entry file or a test route, then remove
import * as Sentry from "@sentry/node"; // or @sentry/bun / @sentry/deno

Sentry.captureException(new Error("Sentry test error — delete me"));

Or trigger an unhandled exception:

// In a route handler or startup — will be captured automatically
throw new Error("Sentry test error — delete me");

Then check your Sentry Issues dashboard — the error should appear within ~30 seconds.

Verification checklist:

CheckHow
Error capturedThrow in a handler, verify in Sentry Issues
Tracing workingCheck Performance tab — should show HTTP spans
includeLocalVariables workingStack frame in Sentry should show variable values
Source maps workingStack trace shows readable file names, not minified

Config Reference

Sentry.init() Core Options

OptionTypeDefaultNotes
dsnstring—Required. Also from SENTRY_DSN env var
tracesSampleRatenumber—0–1; required to enable tracing; do not set when using OTLP path
sendDefaultPiibooleanfalseInclude IP, request headers, user info
includeLocalVariablesbooleanfalseAdd local variable values to stack frames (Node.js)
enableLogsbooleanfalseEnable Sentry Logs product (v9.41.0+)
environmentstring"production"Also from SENTRY_ENVIRONMENT env var
releasestring—Also from SENTRY_RELEASE env var
debugbooleanfalseLog SDK activity to console
enabledbooleantrueSet false in tests to disable sending
sampleRatenumber1.0Fraction of error events to send (0–1)
shutdownTimeoutnumber2000Milliseconds to flush events before process exit

nativeNodeFetchIntegration() Options

Configures outgoing fetch/undici span capture. Since @opentelemetry/instrumentation-undici@0.22.0, response headers like content-length are no longer captured automatically — use headersToSpanAttributes to opt in:

Sentry.init({
  integrations: [
    Sentry.nativeNodeFetchIntegration({
      headersToSpanAttributes: {
        requestHeaders: ["x-request-id"],
        responseHeaders: ["content-length", "content-type"],
      },
    }),
  ],
});
OptionTypeDefaultNotes
breadcrumbsbooleantrueRecord breadcrumbs for outgoing fetch requests
headersToSpanAttributes.requestHeadersstring[]—Request header names to capture as span attributes
headersToSpanAttributes.responseHeadersstring[]—Response header names to capture as span attributes

otlpIntegration() Options (@sentry/node-core/light/otlp)

For OTel-first projects using @sentry/node-core/light. Import: import {otlpIntegration} from '@sentry/node-core/light/otlp'.

OptionTypeDefaultPurpose
setupOtlpTracesExporterbooleantrueAuto-configure OTLP exporter to send spans to Sentry; set false if you already export to your own Collector
collectorUrlstringundefinedOTLP HTTP endpoint of an OTel Collector (e.g., http://localhost:4318/v1/traces); when set, spans are sent to the collector instead of the DSN-derived Sentry endpoint

Graceful Shutdown

Flush buffered events before process exit — important for short-lived scripts and serverless:

process.on("SIGTERM", async () => {
  await Sentry.close(2000); // flush with 2s timeout
  process.exit(0);
});

Environment Variables

VariablePurposeRuntime
SENTRY_DSNDSN (alternative to hardcoding in init())All
SENTRY_ENVIRONMENTDeployment environmentAll
SENTRY_RELEASERelease version string (auto-detected from git)All
SENTRY_AUTH_TOKENSource map upload tokenBuild time
SENTRY_ORGOrg slug for source map uploadBuild time
SENTRY_PROJECTProject slug for source map uploadBuild time
NODE_OPTIONSSet --import./instrument.mjs for ESMNode.js

Source Maps (Node.js)

Readable stack traces in production require source map upload. Use @sentry/cli or the webpack/esbuild/rollup plugins:

npm install @sentry/cli --save-dev
# Create a Sentry auth token at sentry.io/settings/auth-tokens/
# Set in .env.sentry-build-plugin (gitignore this file):
SENTRY_AUTH_TOKEN=sntrys_eyJ...

Add upload step to your build:

{
  "scripts": {
    "build": "tsc && sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload ./dist"
  }
}

Phase 4: Cross-Link

After completing backend setup, check for companion services:

# Frontend companion
ls frontend/ web/ client/ ui/ 2>/dev/null
cat package.json 2>/dev/null | grep -E '"react"|"vue"|"svelte"|"next"'

# Other backend services
ls ../go.mod ../requirements.txt ../Gemfile 2>/dev/null

If a frontend, framework-specific SDK, or other backend is found, suggest the matching skill:

Dedicated JavaScript framework skills (prefer these over generic node-sdk):

DetectedPrefer skillWhy
NestJS (@nestjs/core in package.json)sentry-nestjs-sdkUses @sentry/nestjs with NestJS-native decorators, filters, and GraphQL support
Next.js (next in package.json)sentry-nextjs-sdkThree-runtime architecture (browser, server, edge), withSentryConfig, source map upload

Frontend companions:

DetectedSuggest
React app (react in package.json)sentry-react-sdk
Svelte/SvelteKitsentry-svelte-sdk

Other backend companions:

DetectedSuggest
Go backend (go.mod)sentry-go-sdk
Python backend (requirements.txt, pyproject.toml)sentry-python-sdk
Ruby backend (Gemfile)sentry-ruby-sdk

Connecting frontend and backend with the same DSN or linked projects enables distributed tracing — stack traces that span your browser, API server, and database in a single trace view.


Troubleshooting

IssueCauseSolution
Events not appearinginstrument.js loaded too lateEnsure it's the first require() / loaded via --import or --preload
Tracing spans missingtracesSampleRate not setAdd tracesSampleRate: 1.0 to Sentry.init()
ESM instrumentation not workingMissing --import flagRun with node --import./instrument.mjs; import "./instrument.mjs" inside app is not sufficient
@sentry/profiling-node install fails on BunNative addon incompatibleProfiling is not supported on Bun — remove @sentry/profiling-node
Deno: events not sentMissing --allow-net permissionRun with --allow-net=o<ORG_ID>.ingest.sentry.io
Deno: deno.land/x/sentry not workingDeprecated and frozen at v8.55.0Switch to npm:@sentry/deno specifier
includeLocalVariables not showing valuesIntegration not activated or minified codeEnsure includeLocalVariables: true in init; check source maps
NestJS: errors not capturedWrong SDK or missing filterUse sentry-nestjs-sdk — NestJS needs @sentry/nestjs, not @sentry/node
Hapi: setupHapiErrorHandler timing issueNot awaitedMust await Sentry.setupHapiErrorHandler(server) before server.start()
Shutdown: events lostProcess exits before flushAdd await Sentry.close(2000) in SIGTERM/SIGINT handler
Stack traces show minified codeSource maps not uploadedConfigure @sentry/cli source map upload in build step
No traces appearing (OTLP)Missing @opentelemetry/* packages or otlpIntegration not addedVerify @opentelemetry/sdk-trace-node is installed; add otlpIntegration() to integrations; do not set tracesSampleRate
OTLP: errors not linked to tracesotlpIntegration not registeredEnsure otlpIntegration() is in the integrations array — it registers the propagation context that links errors to OTel traces
Profiling not starting (OTLP)Profiling requires tracesSampleRateProfiling is not compatible with the OTLP path; use the standard @sentry/node setup instead

平台分布

Claude

34.15%
按下载量换算2,414

Codex

33.96%
按下载量换算2,401

Cursor

18.43%
按下载量换算1,303

Gemini CLI

9.92%
按下载量换算701

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills