پروڈکشن نقائص کی نگرانی اور تشخیص
a.js:1:4523 کو دوبارہ مفید بنانا
اپ لوڈ کیے گئے سورس میپس، اسی ماخذ سے گزرنے والی Sentry سرنگ، سیاقی نقائص، فلٹرنگ اور سیشن ری پلے کے ذریعے پروڈکشن ناکامیوں کو قابلِ عمل بنانا۔
پڑھنے کا وقت: 4 منٹتحریر Abdullah Raheel
ناکامی نظروں سے اوجھل ہونے کے دو طریقے
ہمارے پاس نگرانی کے دو الگ خلا تھے۔ موصولہ نقائص، سورس میپس نہ ہونے کے باعث a.js:1:4523 جیسے منیفائیڈ کوڈ کی طرف اشارہ کرتے تھے۔ دوسرے واقعات کبھی پہنچے ہی نہیں کیونکہ sentry.io کو براہ راست درخواستیں روکی جاسکتی تھیں۔
یہ ایک دوسرے سے الگ ناکامیاں تھیں۔ سورس میپس طے کرتے ہیں کہ موصولہ اسٹیک ٹریس کو اصل سورس سے جوڑا جاسکتا ہے یا نہیں۔ ٹرانسپورٹ طے کرتی ہے کہ واقعہ Sentry تک پہنچتا بھی ہے یا نہیں۔ صرف ایک درست کرنے سے واقعہ پھر بھی ناقابلِ مطالعہ یا پوشیدہ رہتا ہے۔
سورس میپس کو عوامی کیے بغیر اپ لوڈ کریں
@sentry/nextjs نے بلڈ کو withSentryConfig میں لپیٹا۔ CI نے SENTRY_AUTH_TOKEN، SENTRY_ORG اور SENTRY_PROJECT دیے۔ بلڈ پلگ اِن نے میپس اپ لوڈ کیے، بہتر سراغ کے لیے کلائنٹ فائلوں کا دائرہ بڑھایا، اور deleteSourcemapsAfterUpload استعمال کیا تاکہ میپس عوامی نتیجے سے پیش نہ ہوں۔
export default withSentryConfig(nextConfig, {
org: process.env.SENTRY_ORG,
project: process.env.SENTRY_PROJECT,
authToken: process.env.SENTRY_AUTH_TOKEN,
sourcemaps: {
disable: process.env.NODE_ENV === 'development',
deleteSourcemapsAfterUpload: true
},
widenClientFileUpload: true,
disableLogger: true,
tunnelRoute: '/t'
})اس سے اصل علامتیں بحال کرنا معمول کی تعیناتی بلڈ کے اندر رہا۔ اجرا کے بعد انجینئر کو یاد رکھنے کے لیے الگ sentry-cli اپ لوڈ حکم نہیں تھا۔
ایپ کے ماخذ کو نقل و حمل کا راستہ بنائیں
اسی ماخذ کا پہلا اختتامی نقطہ /monitoring تھا، مگر رکاوٹیں اسے پھر بھی پہچانتی تھیں۔ میں نے راستہ /t تک مختصر کیا۔ پھر براؤزر واقعات ایپ کے ماخذ کو ہدف بناتے، اور Next.js سرور انہیں Sentry تک بھیجتا تھا۔
اصل اجرا نے اس تبدیلی کے بعد مکمل وصولی درج کی۔ یہ اجرا کی مدت کا نتیجہ تھا، یہ وعدہ نہیں کہ ہر رکاوٹ یا نیٹ ورک ہر واقعہ ہمیشہ پہنچائے گا۔
خاموش اوزاری سلسلے کی عدم مطابقت کا الگ حل درکار تھا
Next.js 15 نے براؤزر ترتیب کو instrumentation-client.ts میں منتقل کیا۔ Turbopack فعال تھا، منصوبہ Sentry v9 پر رہا، اور واضح ایپ ناکامی کے بغیر سورس میپ اپ لوڈ رک گیا۔ Sentry v10 نے موافق اپ لوڈ راستہ بحال کیا۔
ایپ نے براؤزر، سرور اور ایج کے چلتے ماحول میں Sentry شروع کیا اور راستے کی سطح پر اور پوری ایپ کے لیے نقص حدود شامل کیں۔ اصل علامتیں بحال کرنا بلڈ کا معاملہ تھا؛ React، درخواست اور چلتے ماحول کی ناکامیاں پکڑنا الگ ایپ معاملہ تھا۔
قابلِ مطالعہ ہونے کا مطلب خود بخود مفید ہونا نہیں
beforeSend ہُک نے صفحے کا راستہ، براؤزر معلومات، ویوپورٹ اور ایپ ورژن کا ٹیگ شامل کیا۔ اس نے API، ٹائم آؤٹ اور نیٹ ورک کی ناکامیوں کی درجہ بندی کی اور ڈیٹا وصول ہونے سے پہلے Twilio کالنگ کی معروف پابندیوں کو فلٹر کیا۔
Session Replay نے پروڈکشن میں عام نشستوں کے 5% اور ہر نقص والی نشست کا نمونہ لیا۔ ٹریسنگ ابتدا میں اسٹیجنگ پر 100% اور پروڈکشن میں 10% چلی، پھر مقررہ گنجائش زیادہ استعمال کرنے پر بند کردی گئی۔ نمونہ لینے کی شرح عملی ترتیب ہے، آنکھ بند کرکے نقل کرنے کی قدر نہیں۔
- بلڈ کے دوران نجی سورس میپس اپ لوڈ کریں۔
- براؤزر واقعات اسی ماخذ کی سرنگ سے بھیجیں۔
- پروڈکٹ کی متوقع پابندیوں کو ایپ کی ناکامیوں سے الگ کریں۔
- روٹ اور ری پلے کا سیاق منسلک کریں تاکہ قابلِ مطالعہ سطر نمبر کے ساتھ صارف کے بہاؤ کا سیاق بھی معلوم ہو۔

