مانیتورینگ کامل Next.js و Supabase با Sentry
خلاصهٔ کاملتر
Supabase بهتنهایی ابزارهای مانیتورینگ مفیدی داره: پنل Query Performance برای دیدن کوئریهای کند، بخش Advisors برای شناسایی مشکلات امنیتی مثل سیاستهای RLS (Row Level Security) که تعریف نشدن، و بخش Logs برای دیدن لاگهای ساختاریافته از edge functions، PostgREST و سایر زیرسیستمها. اما این ابزارها محدودیت مهمی دارن: نمیتونن بگن یه کوئری کند چرا و در پاسخ به کدوم عمل کاربر اجرا شده.
اینجاست که Sentry وارد میشه. با قابلیت distributed tracing، کل مسیر یه درخواست رو ردیابی میکنه: از لود شدن صفحه در Next.js، تا API route، تا Edge Function در Deno، تا کوئری Postgres — با زمانبندی دقیق هر مرحله. برای وصل کردن لاگهای Supabase به Sentry، کافیه از قابلیت Log Drain استفاده کنی: در داشبورد Supabase بخش Logs > Drain رو باز کن و DSN پروژه Sentyrt رو وارد کن. از این به بعد همه لاگها بهصورت خودکار منتقل میشن.
برای instrumentation درست Next.js، باید Supabase integration رو در sentry.server.config.ts اضافه کنی تا هر کوئری بهصورت یه span جداگانه در trace نمایش داده بشه:
Sentry.init({
dsn: process.env.SENTRY_DSN,
tracesSampleRate: 0.1,
integrations: [
Sentry.supabaseIntegration(supabaseClient, Sentry, {
tracing: true,
breadcrumbs: true,
}),
],
});برای Edge Functions که روی Deno اجرا میشن، باید از پکیج @sentry/deno استفاده کنی و Sentry رو قبل از هر import دیگهای مقداردهی کنی. نکته مهم: پروژه Sentry مربوط به Edge Functions رو جدا از پروژه Next.js نگه دار تا سیگنالها با هم قاطی نشن.
یکی از مهمترین چیزهایی که Sentry بهصورت خودکار شناسایی میکنه، مشکل N+1 query هست — یعنی وقتی کد برای هر آیتم از یه لیست، یه کوئری جداگانه به دیتابیس میزنه. این مشکل روی دیتابیس ۴۰ ردیفه دیده نمیشه، ولی وقتی دادهها به ۴۰۰۰ ردیف رسیدن، یه صفحه ساده ده ثانیه طول میکشه. علاوهبر این، Core Web Vitals فرانتاند (LCP، INP، CLS) هم کنار دادههای بکاند نمایش داده میشن تا تشخیص بدی مشکل سرعت از کدوم طرف هست.
Seer، ابزار هوش مصنوعی Sentry، میتونه از تمام تاریخچه خطاها، traceها، لاگها و session replay استفاده کنه تا ریشه مشکل رو پیدا کنه. قابلیت Autofix یه مرحله جلوتره: وقتی مشکل جدیدی میرسه، Seer ریشه احتمالی رو پیشنهاد میده و در صورت تمایل یه draft PR با رفع پیشنهادی میسازه. این همون چیزیه که «نرمافزار خودترمیمشونده» در عمل بهش میگن: یه pipeline که مشکلات جدید رو بدون نیاز به دخالت مستقیم شما شناسایی، آنالیز و به یه coding agent تحویل میده.
نکات کلیدی:
- Supabase مانیتورینگ داخلی داره ولی cross-stack trace نمیکنه
- Log Drain یه راه سریع برای انتقال همه لاگهای Supabase به Sentry هست
- supabaseIntegration در Sentry هر کوئری دیتابیس رو به یه span تبدیل میکنه
- Edge Functions روی Deno اجرا میشن و به پروژه Sentry جداگانه نیاز دارن
- Sentry بهطور خودکار N+1 query و spanهای کند رو شناسایی میکنه
- Seer میتونه ریشه مشکل رو پیدا کنه و پیشنهاد رفع اتوماتیک بده




