مشاہدہمائیکرو سروسزلاگنگنگرانیکلاؤڈ انفراسٹرکچرتقسیم شدہ نظام
مائیکرو سروسز بمقابلہ یک سنگی نظام لاگنگ میں مشاہدہ
مائیکرو سروسز آبزرویبلٹی آزاد خدمات میں تقسیم شدہ ٹریسنگ، میٹرکس اور لاگز پیش کرتی ہے، جب کہ یک سنگی لاگنگ ایک ہی ایپلی کیشن سے سنٹرلائزڈ ریکارڈز پر فوکس کرتی ہے۔ صحیح انتخاب کا انحصار سسٹم کی پیچیدگی، پیمانے، اور سروس کے تعاملات میں ٹیموں کو کتنی بصیرت کی ضرورت ہے۔
اہم نکات
مائیکرو سروسز آبزرویبلٹی ٹریس، میٹرکس اور لاگ کو مساوی سگنل کے طور پر مانتی ہے، جب کہ یک سنگی لاگنگ تقریباً مکمل طور پر متنی ریکارڈز پر جھکتی ہے۔
تقسیم شدہ ٹریسنگ ٹیموں کو اس بات کی نشاندہی کرنے دیتی ہے کہ کون سی مخصوص سروس ناکامی کا سبب بنتی ہے، جس میں روایتی لاگز سروس کی حدود میں جدوجہد کرتے ہیں۔
یک سنگی لاگنگ کو شروع کرنے کے لیے بہت کم بنیادی ڈھانچے اور مہارت کی ضرورت ہوتی ہے، جو اسے چھوٹے یا میراثی نظاموں کے لیے پرکشش بناتی ہے۔
نظام کی پیچیدگی کے ساتھ مشاہداتی پیمانہ، جب کہ یک سنگی لاگنگ ایپلی کیشن کے سائز اور ٹریفک کے بڑھنے کے ساتھ تنزلی کا شکار ہوتی ہے۔
مائیکرو سروسز میں مشاہدہ کیا ہے؟
تقسیم شدہ، آزادانہ طور پر تعینات خدمات میں رویے کو سمجھنے کے لیے نشانات، میٹرکس، اور لاگز کو یکجا کرنے والا ایک کثیر جہتی نقطہ نظر۔
تین ستونوں پر بنایا گیا: تمام سروسز میں تقسیم شدہ ٹریسنگ، میٹرکس، اور ساختی لاگنگ
ایک درخواست کی پیروی کرنے کے لیے ارتباطی IDs کا استعمال کرتا ہے کیونکہ یہ درجنوں یا سینکڑوں سروسز کے درمیان ہوتا ہے۔
ڈیٹا اکٹھا کرنے اور ویژولائزیشن کے لیے OpenTelemetry، Jaeger، Prometheus، اور Grafana جیسے ٹولز پر انحصار کرتا ہے۔
عارضی انفراسٹرکچر کو ہینڈل کرنے کے لیے ڈیزائن کیا گیا ہے جہاں کنٹینرز اور پوڈز مسلسل اوپر اور نیچے گھومتے ہیں
SRE ٹیموں کو خدمت کی سطح کے مقاصد اور خرابی کے بجٹ کے ذریعے بے ضابطگیوں کا پتہ لگانے کے قابل بناتا ہے۔
یک سنگی نظام لاگنگ کیا ہے؟
ایک روایتی نقطہ نظر جہاں ایک ہی ایپلیکیشن ڈیبگنگ اور آڈیٹنگ کے لیے مرکزی فائلوں یا سنگل لاگ اسٹور پر لاگ انٹری لکھتی ہے۔
لاگز ایک واحد عمل کے طور پر چلنے والے ایک کوڈبیس سے شروع ہوتے ہیں، جس کی پیروی کرنے کے لیے درخواست کے راستے سیدھے ہوتے ہیں۔
عام طور پر فائل پر مبنی لاگنگ، syslog، یا لاگ بیک یا log4j جیسے سادہ لاگ ایگریگیٹرز استعمال کرتا ہے۔
ڈیبگنگ میں عام طور پر لاگ فائلوں کے ذریعے گریپ کرنا یا کسی ایک ELK اسٹیک مثال سے استفسار کرنا شامل ہوتا ہے۔
پرفارمنس اوور ہیڈ کم سے کم ہے کیونکہ لاگنگ ایک رن ٹائم ماحول میں ہوتی ہے۔
تھریڈ-مقامی سیاق و سباق یا سادہ سیشن IDs کے ذریعے ارتباط کو نافذ کرنا آسان ہے۔
موازنہ جدول
خصوصیت
مائیکرو سروسز میں مشاہدہ
یک سنگی نظام لاگنگ
فن تعمیر
بہت ساری خدمات میں تقسیم
سنگل متحد درخواست
بنیادی ڈیٹا کی اقسام
نشانات، میٹرکس اور لاگز
لاگز بنیادی طور پر، کبھی کبھی میٹرکس
ٹریسنگ کی درخواست کریں۔
اسپین سیاق و سباق کے ساتھ تقسیم شدہ ٹریسنگ
تھریڈ لوکل یا سیشن پر مبنی ٹریکنگ
ٹولنگ کی پیچیدگی
اعلی - تمام سروسز میں آلات کی ضرورت ہوتی ہے۔
کم - سنگل لاگ پائپ لائن کافی ہے۔
اسکیل ایبلٹی
سروس کی گنتی کے ساتھ افقی طور پر ترازو
واحد ایپلیکیشن تھرو پٹ کے ذریعہ محدود
ناکامی کی تشخیص
اس بات کی نشاندہی کرتا ہے کہ کون سی سروس تاخیر یا خرابیوں کا سبب بنی۔
ایک عمل میں آسان، حدود میں مشکل
سٹوریج کی ضروریات
زیادہ حجم، اکثر ٹائم سیریز ڈیٹا بیس
اعتدال پسند، عام طور پر فلیٹ فائلز یا ایک انڈیکس
نفاذ کی لاگت
اہم پیشگی سرمایہ کاری
کم ابتدائی سیٹ اپ لاگت
تفصیلی موازنہ
بنیادی فلسفہ اور نقطہ نظر
مائیکرو سروسز کے مشاہدے کا فرض ہے کہ آپ ہر ناکامی کے موڈ کی پیشگی پیش گوئی نہیں کر سکتے، اس لیے آپ کافی متنوع ٹیلی میٹری جمع کرتے ہیں تاکہ مسائل پیدا ہونے کے بعد نئے سوالات پوچھ سکیں۔ یک سنگی لاگنگ ایک آسان موقف اختیار کرتی ہے: درخواست کے دوران جو کچھ ہوا اسے دوبارہ تشکیل دینے کے لیے کافی متنی ریکارڈ حاصل کریں۔ پہلا نقطہ نظر نوشتہ جات کو بہت سے لوگوں کے درمیان ایک سگنل کے طور پر مانتا ہے، جبکہ دوسرا نظام کے رویے کو سمجھنے کے لیے نوشتہ جات کو بنیادی سگنل کے طور پر مانتا ہے۔
ڈیبگنگ اور روٹ کاز تجزیہ
جب مائیکرو سروسز سیٹ اپ میں کوئی چیز ٹوٹ جاتی ہے تو انجینئر یہ دیکھنے کے لیے تقسیم شدہ نشانات میں چھلانگ لگاتے ہیں کہ کس سروس نے لیٹنسی متعارف کرائی ہے یا کوئی غلطی لوٹائی ہے۔ یک سنگی میں، ڈویلپرز عام طور پر ایک لاگ فائل کھولتے ہیں، ٹائم اسٹیمپ یا صارف ID تلاش کرتے ہیں، اور ترتیب وار اندراجات کو پڑھتے ہیں۔ یک سنگی راستہ زیادہ بدیہی محسوس ہوتا ہے، لیکن یہ ٹوٹ جاتا ہے ایک بار جب سسٹم اتنا بڑا ہو جاتا ہے کہ ایک لاگ فائل غیر مؤثر ہو جاتی ہے۔
ٹولنگ اور انفراسٹرکچر
آبزرویبلٹی اسٹیک عام طور پر ایک انسٹرومینٹیشن لائبریری جیسے OpenTelemetry، Jaeger یا Tempo جیسا ٹریسنگ بیک اینڈ، Prometheus جیسا میٹرکس اسٹور اور Grafana جیسی ڈیش بورڈنگ پرت کو یکجا کرتے ہیں۔ یک سنگی لاگنگ کو اکثر بہت کم ضرورت ہوتی ہے - ایک لاگنگ فریم ورک، فائل بیٹ جیسا لاگ شپر، اور شاید ایک ELK یا OpenSearch کلسٹر۔ مائیکرو سروسز ٹول چین زیادہ آپریشنل میچورٹی کا مطالبہ کرتا ہے لیکن جب سسٹمز پیچیدہ ہو جاتے ہیں تو ادائیگی ہوتی ہے۔
کارکردگی اور اوور ہیڈ
تقسیم شدہ ٹریسنگ نیٹ ورک ہاپس اور سیریلائزیشن کے اخراجات میں اضافہ کرتی ہے کیونکہ اسپین سروس کی حدود میں پھیل جاتا ہے، حالانکہ نمونے لینے کی حکمت عملی اوور ہیڈ کو قابل انتظام رکھتی ہے۔ یک سنگی لاگنگ درخواست کے عمل کے قریب رہتی ہے، اس لیے کارکردگی کا زیادہ تر اثر ڈسک I/O اور لاگ فارمیٹنگ سے ہوتا ہے۔ اگر لاگنگ کو پیداوار میں لفظی سطح پر چھوڑ دیا جائے تو دونوں نقطہ نظر کارکردگی کو کم کر سکتے ہیں، لیکن مائیکرو سروسز کے ماحول کو زیادہ محتاط ٹیوننگ کی ضرورت ہوتی ہے۔
جب ہر ایک سمجھ میں آتا ہے۔
مشاہداتی صلاحیت بار بار تعیناتیوں، پولی گلوٹ سروسز، اور ایسی ٹیموں کے ساتھ ماحول میں چمکتی ہے جنہیں اجزاء کی آزاد ملکیت کی ضرورت ہوتی ہے۔ یک سنگی لاگنگ چھوٹی ایپلی کیشنز، لیگیسی سسٹمز، یا ایسے منظرناموں کے لیے ایک ٹھوس فٹ رہتی ہے جہاں ریگولیٹری تعمیل براہ راست آڈٹ ٹریلز کا مطالبہ کرتی ہے۔ بہت سی تنظیمیں درحقیقت دونوں کو چلاتی ہیں — انجینئرنگ بصیرت کے لیے مشاہداتی ٹولز کو سب سے اوپر رکھتے ہوئے تعمیل کے لیے روایتی لاگ کو رکھنا۔
فوائد اور نقصانات
مائیکرو سروسز میں مشاہدہ
فوائد
+مکمل درخواست کی مرئیت
+ملٹی سگنل کا تعلق
+پیچیدگی کے ساتھ ترازو
+SRE طریقوں کو فعال کرتا ہے۔
کونس
−ٹولنگ کی زیادہ لاگت
−تیز سیکھنے کا وکر
−زیادہ اسٹوریج اوور ہیڈ
−آلات کے نظم و ضبط کی ضرورت ہے۔
یک سنگی نظام لاگنگ
فوائد
+لاگو کرنے کے لئے آسان
+کم آپریشنل لاگت
+زیادہ تر ٹیموں سے واقف
+آسان آڈٹ ٹریل
کونس
−محدود کراس سروس بصیرت
−سائز کے ساتھ ناقص ترازو
−ناکامی کا واحد نقطہ
−واقعات کو جوڑنا مشکل ہے۔
عام غلط فہمیاں
افسانیہ
کسی بھی سسٹم کو ڈیبگ کرنے کے لیے اکیلے لاگز کافی ہیں۔
حقیقت
نوشتہ جات کے لیے لاگز اچھی طرح سے کام کرتے ہیں لیکن تقسیم شدہ نظاموں میں تاثیر کھو دیتے ہیں جہاں ایک درخواست بہت ساری خدمات کو چھوتی ہے۔ میٹرکس اور ٹریس پیٹرن اور causal چینز دکھا کر خلا کو پُر کرتے ہیں جنہیں لاگز آسانی سے ظاہر نہیں کر سکتے ہیں۔
افسانیہ
مشاہدہ صرف ایک نئے نام کے ساتھ فینسی لاگنگ ہے۔
حقیقت
مشاہدہ ایک وسیع تر نظم و ضبط ہے جس میں لاگز شامل ہیں لیکن میٹرکس اور نشانات کو فرسٹ کلاس سگنلز کے طور پر بھی شامل کرتا ہے۔ ہدف ریکارڈز کی تلاش سے نیا کوڈ بھیجے بغیر سسٹم کے رویے کے بارے میں صوابدیدی سوالات پوچھنے کی طرف بدل جاتا ہے۔
افسانیہ
یک سنگی نظاموں کو مشاہدے کی ضرورت نہیں ہے۔
حقیقت
یہاں تک کہ واحد ایپلیکیشنز بھی معنی خیز پیمانے پر پہنچنے کے بعد میٹرکس، ٹریسز، اور سٹرکچرڈ لاگ سے فائدہ اٹھاتی ہیں۔ مشاہداتی نظام کی حالت کو سمجھنے کے بارے میں ہے، جس کا اطلاق فن تعمیر سے قطع نظر ہوتا ہے۔
افسانیہ
تقسیم شدہ ٹریسنگ پیداواری استعمال کے لیے بہت مہنگی ہے۔
حقیقت
جدید ٹریسنگ سسٹم درخواستوں کے نمائندہ ذیلی سیٹ کو حاصل کرنے کے لیے سر پر مبنی یا دم پر مبنی نمونے لینے کا استعمال کرتے ہیں۔ زیادہ تر مسائل کی تشخیص کے لیے کافی ڈیٹا فراہم کرتے ہوئے یہ اوور ہیڈ کو کم رکھتا ہے۔
افسانیہ
مائیکرو سروسز پر سوئچ کرنا خود بخود مشاہدہ کو بہتر بناتا ہے۔
حقیقت
مائیکرو سروسز مشاہدے کو مشکل بناتی ہیں، آسان نہیں، کیونکہ اب آپ کے پاس نگرانی کے لیے زیادہ متحرک حصے ہیں۔ مناسب انسٹرومینٹیشن اور ٹولنگ کے بغیر، اچھی طرح سے آلات والے یک سنگی کے مقابلے میں مرئیت دراصل کم ہو جاتی ہے۔
عمومی پوچھے گئے سوالات
مشاہداتی اور لاگنگ میں کیا فرق ہے؟
لاگنگ ٹیلی میٹری ڈیٹا کی ایک قسم ہے - مجرد واقعات جو کسی ایپلیکیشن کے ذریعے ریکارڈ کیے جاتے ہیں۔ مشاہداتی نظام کی ایک خاصیت ہے جو یہ بتاتی ہے کہ آپ بیرونی آؤٹ پٹس سے اس کی اندرونی حالت کو کتنی اچھی طرح سمجھ سکتے ہیں۔ مشاہدہ کرنے میں لاگ، میٹرکس اور ٹریس کو ایک ساتھ استعمال کیا جاتا ہے، جبکہ لاگنگ صرف متنی ریکارڈز پر مرکوز ہوتی ہے۔
مائیکرو سروسز کو تقسیم شدہ ٹریسنگ کی ضرورت کیوں ہے؟
مائیکرو سروسز فن تعمیر میں ایک صارف کی درخواست مکمل ہونے سے پہلے پانچ، دس یا اس سے زیادہ خدمات سے گزر سکتی ہے۔ تقسیم شدہ ٹریسنگ اس درخواست کی پیروی کرتی ہے کہ سروس باؤنڈری کے پار ارتباطی IDs اور اسپین کا استعمال کرتے ہوئے، یہ دیکھنا ممکن بناتا ہے کہ وقت کہاں گزارا گیا اور ناکامیاں کہاں سے ہوئیں۔
کیا آپ مائیکرو سروسز ماحول میں روایتی لاگنگ استعمال کر سکتے ہیں؟
ہاں، لیکن مشترکہ شناخت کنندگان کے بغیر تمام سروسز میں لاگز کو آپس میں جوڑنا مشکل ہو جاتا ہے۔ زیادہ تر ٹیمیں نظام کے رویے کی مکمل تصویر حاصل کرنے کے لیے کوریلیشن آئی ڈی کے ساتھ سٹرکچرڈ لاگنگ شامل کرتی ہیں، پھر سب سے اوپر لیئر ٹریسنگ اور میٹرکس۔
مشاہدے کے تین ستون کیا ہیں؟
تین ستون لاگز، میٹرکس اور ٹریس ہیں۔ لاگز مجرد واقعات کو پکڑتے ہیں، میٹرکس وقت کے ساتھ عددی ڈیٹا کو ریکارڈ کرتے ہیں، اور نشانات تقسیم شدہ نظاموں کے ذریعے درخواست کا راستہ دکھاتے ہیں۔ وہ مل کر ٹیموں کو کارکردگی، غلطیوں اور صارف کے تجربے کے بارے میں سوالات کے جوابات دینے دیتے ہیں۔
کیا OpenTelemetry مشاہدے کا معیار ہے؟
OpenTelemetry زیادہ تر زبانوں اور پلیٹ فارمز میں آلات سازی کے لیے ڈی فیکٹو معیار بن گیا ہے۔ اس نے OpenTracing اور OpenCensus پروجیکٹس کو ضم کر دیا ہے اور اب اسے Cloud Native Computing Foundation کی حمایت حاصل ہے، جس میں وینڈرز اور اوپن سورس ٹولز کی وسیع حمایت حاصل ہے۔
لاگنگ کے مقابلے مشاہدے کی قیمت کتنی ہے؟
اضافی اسٹوریج، ٹولنگ لائسنس، اور آلات سازی کے لیے انجینئرنگ کے وقت کی وجہ سے عام طور پر مشاہدے کی لاگت زیادہ ہوتی ہے۔ تاہم، یہ اکثر ریزولوشن کے لیے اوسط وقت کو کم کرتا ہے اور مہنگی بندش کو روکتا ہے، جو پیچیدہ نظام چلانے والی تنظیموں کے لیے پیشگی سرمایہ کاری کو پورا کر سکتا ہے۔
کیا monoliths مشاہداتی ٹولز سے فائدہ اٹھاتے ہیں؟
بالکل۔ یہاں تک کہ واحد ایپلی کیشنز بھی اپنے عمل کے اندر تقسیم شدہ ٹریسنگ سے، کارکردگی کے رجحانات کو ظاہر کرنے والے میٹرکس سے، اور استفسار کرنے میں آسان ساختی لاگز سے قدر حاصل کرتی ہیں۔ مشاہداتی ٹولز مائیکرو سروسز کے لیے مخصوص نہیں ہیں۔
تقسیم شدہ ٹریسنگ میں اسپین کیا ہے؟
ایک اسپین ٹریس کے اندر کام کی واحد اکائی کی نمائندگی کرتا ہے، جیسے کہ ڈیٹا بیس کا سوال یا خدمات کے درمیان HTTP کال۔ Spans کا ایک نام، آغاز کا وقت، دورانیہ، اور میٹا ڈیٹا ہوتا ہے، اور وہ ایک مکمل ٹریس بنانے کے لیے والدین اور بچے کے تعلقات کے ذریعے آپس میں جڑ جاتے ہیں۔
آپ مائیکرو سروسز میں لاگز کو کیسے جوڑتے ہیں؟
ٹیمیں عام طور پر سسٹم کے کنارے پر ایک ارتباطی ID لگاتی ہیں اور اسے HTTP ہیڈر، میسج میٹا ڈیٹا، یا تھریڈ سیاق و سباق کے ذریعے پھیلاتی ہیں۔ ہر سروس میں اس ID کو لاگ انٹریز میں شامل کیا جاتا ہے، لہذا تمام سروسز میں ایک ہی تلاش مکمل درخواست کا راستہ لوٹاتی ہے۔
کیا سٹارٹ اپ کو مشاہدے کا استعمال کرنا چاہئے یا لاگنگ کے ساتھ رہنا چاہئے؟
ابتدائی مرحلے کے سٹارٹ اپ عام طور پر سٹرکچرڈ لاگنگ اور بنیادی میٹرکس کے ساتھ شروع ہوتے ہیں کیونکہ وہ تیزی سے بھیجتے ہیں اور لاگت کم ہوتی ہے۔ جیسے جیسے نظام بڑھتا ہے اور ٹیمیں بڑھ جاتی ہیں، ترقی کی رفتار کو برقرار رکھنے کے لیے ٹریسنگ اور ایک متحد مشاہداتی پلیٹ فارم کا اضافہ فائدہ مند ہو جاتا ہے۔
فیصلہ
جب آپ کا سسٹم بہت سی آزاد خدمات پر محیط ہو اور آپ کو حقیقی وقت میں کراس سروس کے تعاملات کو سمجھنے کی ضرورت ہو تو مائیکرو سروسز کے مشاہدے کا انتخاب کریں۔ آسان ایپلی کیشنز کے لیے یک سنگی لاگنگ کے ساتھ قائم رہیں جہاں مرکزی ریکارڈ کافی حد تک مرئیت اور آپریشنل اوور ہیڈ معاملات کو دانے دار بصیرت سے زیادہ فراہم کرتے ہیں۔ عملی طور پر، پختہ نظام اکثر ایک سے مکمل طور پر عہد کرنے کی بجائے دونوں طریقوں کو ملا دیتے ہیں۔