# Node.js > https://docs.errora.org/platforms/node ## نصب ```bash npm install @sentry/node @sentry/profiling-node ``` ## اول مقداردهی، بعد بقیهٔ برنامه `Sentry.init()` باید **پیش از** import شدن بقیهٔ چیزها اجرا شود تا SDK بتواند `http`، فریم‌ورک و درایور دیتابیس شما را وصله بزند. آن را در فایل جداگانه بگذارید: ```javascript // instrument.js import * as Sentry from "@sentry/node"; import { nodeProfilingIntegration } from "@sentry/profiling-node"; Sentry.init({ dsn: process.env.SENTRY_DSN, environment: process.env.NODE_ENV, release: process.env.APP_VERSION, tracesSampleRate: 0.2, profilesSampleRate: 1.0, // کسری از تراکنش‌های نمونه‌برداری‌شده integrations: [nodeProfilingIntegration()], _experiments: { enableLogs: true }, sendDefaultPii: false, }); ``` و پیش از برنامه بارگذاری‌اش کنید: ```bash node --import ./instrument.js ./server.js ``` در CommonJS: `require("./instrument.js")` در همان خط اول فایل ورودی. ## Express ```javascript import "./instrument.js"; import express from "express"; import * as Sentry from "@sentry/node"; const app = express(); // … مسیرهای شما … Sentry.setupExpressErrorHandler(app); // بعد از مسیرها، پیش از میان‌افزار خطای دیگر app.listen(3000); ``` برای Fastify (`Sentry.setupFastifyErrorHandler(app)`)، NestJS (`@sentry/nestjs`) و Koa هم معادل یک‌خطی وجود دارد. ## لاگ ```javascript const { logger } = Sentry; logger.info("payment captured", { orderId, amount }); logger.error("gateway rejected", { orderId, code }); ``` این‌ها در [لاگ‌ها](/products/logs) می‌نشینند و به ترِیس فعال گره می‌خورند. ## چک‌این کران ```javascript import * as Sentry from "@sentry/node"; const checkInId = Sentry.captureCheckIn( { monitorSlug: "nightly-report", status: "in_progress" }, { schedule: { type: "crontab", value: "0 3 * * *" }, checkinMargin: 5, maxRuntime: 30, timezone: "Asia/Tehran" }, ); try { await runNightlyReport(); Sentry.captureCheckIn({ checkInId, monitorSlug: "nightly-report", status: "ok" }); } catch (err) { Sentry.captureCheckIn({ checkInId, monitorSlug: "nightly-report", status: "error" }); throw err; } ``` برای زمان‌بندی، مهلت و آستانه‌ها به [مانیتورینگ کران](/products/crons) سر بزنید. ## متریک ```javascript Sentry.metrics.increment("checkout.attempt", 1, { tags: { plan: "pro" } }); Sentry.metrics.distribution("checkout.latency", 421, { unit: "millisecond" }); ``` نگاه کنید به [متریک](/products/metrics). ## بررسی نهایی ```javascript Sentry.captureException(new Error("Errora smoke test")); ```