یہ رقابت کے تین ستون ہیں۔ وہ مختلف سوالات کے جوابات دیتے ہیں: میٹرکس آپ کو بتاتے ہیں کہ کیا کوئی چیز غلط ہے، لاگز آپ کو بتاتے ہیں کہ کیا ہوا، اور ٹریسز آپ کو بتاتے ہیں ایک distributed flow میں وقت یا خرابی چلی گئی۔
یہ رقابت کے تین ستون ہیں۔ وہ مختلف سوالات کے جوابات دیتے ہیں: میٹرکس آپ کو بتاتے ہیں کہ کیا کوئی چیز غلط ہے، لاگز آپ کو بتاتے ہیں کہ کیا ہوا، اور ٹریسز آپ کو بتاتے ہیں ایک distributed flow میں وقت یا خرابی چلی گئی۔
METRICS aggregate numbers over time (counters, gauges, histograms)
→ cheap, low cardinality, great for trends & ALERTING
→ e.g. error rate = 2%, p99 latency = 800ms
LOGS discrete, timestamped events with detail (often structured JSON)
→ rich context for DEBUGGING a specific request
→ e.g. {"level":"error","user":123,"msg":"payment declined"}
TRACES the path of one request across services, with timing per span
→ shows latency BREAKDOWN and where a call fails
→ e.g. checkout 800ms = api 50ms + db 700ms + email 50ms
1. METRIC alerts: "checkout p99 latency jumped to 2s" → you know THERE's a problem
2. TRACE a slow request: 1.8s of 2s is spent in the inventory service
→ you know WHERE it is
3. LOGS of the inventory service at that time: "slow query: missing index"
→ you know WHAT happened
میٹرکس آپ کو ایک علامت اور وقت کی کھڑکی تک محدود کرتے ہیں؛ ٹریسز اسے کسی سروس یا کال تک مقام کرتے ہیں؛ لاگز بالکل وجہ دیتے ہیں۔ میٹرکس کے بغیر براہ راست لاگز پر جانا اندھے پن سے تلاش کرنا ہے۔
میٹرکس جمع کیے جاتے ہیں، لہذا وہ پیمانے پر بھی سستے رہتے ہیں — ہمیشہ چلنے والے ڈیش بورڈ اور الرٹس کے لیے مثالی۔ لاگز اور ٹریسز فی واقعہ ہیں اور مہنگے ہیں، لہذا وہ عام طور پر نمونے لیے جاتے ہیں اور تحقیق کے دوران درخواست پر دستی طلب کیے جاتے ہیں۔
غلط ستون کا استعمال وقت ضائع کرتا ہے: آپ خام لاگز پر موثر طریقے سے الرٹ نہیں کر سکتے (بہت شوریلا، بہت مہنگا)، اور آپ کسی مخصوص ناکام درخواست کو ایک جمع شدہ میٹرک سے ڈیبگ نہیں کر سکتے۔ یہ جانتے ہوئے کہ میٹرکس پہچان کرتے ہیں، ٹریسز مقام دیتے ہیں، اور لاگز وضاحت کرتے ہیں آپ کو "کوئی چیز غلط ہے" سے روٹ کاز تک ایک تیز، دہرایا جانے والا راستہ دیتا ہے۔