Skip to main content

اتصال برنامه NodeJS به Sentry

مقدمه

در این صفحه می‌خواهیم Sentry SDK را برای برنامه‌های NodeJS راه‌اندازی کنیم تا بتوانیم به صورت اتوماتیک گزارش خطاها و Exceptionهای برنامه را دریافت کنیم. SDK سنتری از نسخه های پیشین NodeJS پشتیبانی می‌کند و با تمامی فریمورک‌های محبوب و پکیج‌های NodeJS قابل ادغام است. اگر هنوز حساب Sentry خود را نساختید و پروژه خودتان را ایجاد نکردید به کنسول همروش مراجعه کنید و سازمان خودتان را بسازید.

ساخت پروژه NodeJS

وارد سازمان خود در سنتری بشوید. بر روی دکمه Projects در نوار سمت چپ کلیک کنید و سپس بر روی دکمه Create Project در گوشه سمت راست کلیک کنید.

سپس به صفحه انتخاب پلتفرم و تنظیمات پروژه هدایت می‌شوید، در این صفحه پلتفرم NodeJS را انتخاب کنید.

برای تنظیم نحوه دریافت Alert ها و انتخاب نام پروژه به پایین صفحه بروید:

در این قسمت گزینه "Alert me on every issue" را انتخاب کنید. با انتخاب این گزینه هر خطایی که به سنتری ارسال شود، برای شما یک ایمیل بر مبنای آن اخطار ارسال می‌شود. اگر می‌خواهید قوانین خود را برای ارسال Alert ها تنظیم کنید گزینه "I'll create my own alerts later" را انتخاب کنید و بعدا به بخش Alerts در نوار سمت چپ رفته و تنظیمات خود را اعمال کنید. و برای انتخاب نام پروژه در کادر Project Name نام پروژه خود را بنویسید و تیم مربوط به این پروژه را برای دریافت Alert های این پروژه انتخاب کنید. اگر تیمی برای این پروژه ندارید، با کلیک بر رو گزینه + کنار کادر Team می‌توانید در همان صفحه تیم مورد نظر خودتان را بسازید و در نهایت با کلیک بر روی دکمه Create Project ساخت پروژه را نهایی کنید.

نصب SDK

سنتری با استفاده Sentry SDK داده‌ها را از داخل Runtime برنامه شما جمع‌آوری می‌کند.

# Using yarn
yarn add @sentry/node @sentry/tracing
# Using npm
npm install --save @sentry/node @sentry/tracing

تنظیمات SDK

تنظیمات SDK باید زودتر از تمامی lifecylceهای برنامه شما اتفاق بیفتد. بعد از انجام تنظیمات، سنتری تمامی خطاها و exceptionها را برای ما می‌فرستد.

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

const Tracing = require("@sentry/tracing");

Sentry.init({
// DSN key provided after creating project
dsn: "https://examplePublicKey@sentry.hamravesh.com/0",
tracesSampleRate: 1.0,
});

تایید عملکرد

این تکه کد حاوی یک Error عمدی است که شما بتوانید تمام فرآیند را تست کنید.

const transaction = Sentry.startTransaction({
op: "test",
name: "My First Test Transaction",
});

setTimeout(() => {
try {
foo();
} catch (e) {
Sentry.captureException(e);
} finally {
transaction.finish();
}
}, 99);

برای دیدن و حل مشکل Capture شده، وارد سازمان خود در Sentry شوید و پروژه ای که ساختید را باز کنید و روی عنوان خطا کلیک کنید. در آنجا می‌توانید اطلاعات جزئی خطا را ببینید.