AWS X-Ray के साथ distributed tracing और structured logging

AWS पर एप्लिकेशन डिप्लॉय करना

Dunieski Otano

Amazon Web Services Solutions Architect

वह स्लो रिक्वेस्ट जो किसी को नहीं मिला

  • एक रिक्वेस्ट में चार सेकंड लगते हैं
  • हर सर्विस के लॉग अकेले ठीक दिखते हैं
  • कोई भी पूरा पाथ नहीं देख पाता

एक मैग्नीफाइंग ग्लास जो distributed सर्विस मैप पर एक स्लो रिक्वेस्ट को ट्रेस कर रहा है, लाल बॉटलनेक नोड के साथ

AWS पर एप्लिकेशन डिप्लॉय करना

Distributed tracing क्या हल करता है

बाएँ लाल रंग में अलग-थलग per-service log silos बनाम दाएँ हरे रंग में एक unified X-Ray Gantt ट्रेस टाइमलाइन जो उसी रिक्वेस्ट को API Gateway, Lambda, DynamoDB, और external API में जोड़ती है

  • एक रिक्वेस्ट कई सर्विसेज छूती है
  • सिर्फ लॉग end-to-end path नहीं दिखा पाते
  • एक trace पूरी रिक्वेस्ट को जोड़ देता है
  • समय ठीक कहाँ लगा, यह साफ दिखता है
AWS पर एप्लिकेशन डिप्लॉय करना

Segments, subsegments, और service map

  • Segment: एक सर्विस द्वारा किया गया काम
  • Subsegment: segment के भीतर एक यूनिट, जैसे DB कॉल
  • Service map: सभी segments का visual ग्राफ
  • हर नोड पर latency और errors दिखते हैं

X-Ray ट्रेस संरचना: प्रति सर्विस एक segment, DB कॉल्स के लिए subsegments, इन्हें जोड़कर service map ग्राफ बनता है जहाँ हर नोड पर latency और error rate दिखता है

AWS पर एप्लिकेशन डिप्लॉय करना

Annotations बनाम metadata


Annotations

  • Indexed key-values, इसलिए filterable हैं
  • उन्हें चीजों के लिए उपयोग करें जिन पर आप सर्च करेंगे, जैसे customer tier

Metadata

  • अतिरिक्त विवरण, indexed नहीं
  • संदर्भ के लिए जोड़ें, पर इस पर सर्च नहीं कर सकते
AWS पर एप्लिकेशन डिप्लॉय करना

Trace IDs से लॉग्स को correlate करना

  • हर ट्रेस का एक यूनिक trace ID होता है
  • अपने structured logs में trace ID शामिल करें
  • स्लो ट्रेस से सीधा उसकी लॉग लाइन्स पर जाएँ
  • लॉग्स और ट्रेसेज़ एक ही investigation बन जाते हैं

Structured log लाइन जिसमें xray_trace_id फ़ील्ड हाईलाइट है, X-Ray ट्रेस व्यू से CloudWatch Logs की मिलती-जुलती लॉग लाइन्स की ओर तीर, correlated investigation के लिए

AWS पर एप्लिकेशन डिप्लॉय करना

Service map पढ़कर bottleneck ढूँढना

X-Ray service map जिसमें high-latency नोड हाईलाइट है, ट्रेस टाइमलाइन में ड्रिल-डाउन कर सबसे लंबा segment बार bottleneck के रूप में दिखाया गया है

  • Service map से शुरू करें, लॉग्स से नहीं
  • सबसे ज्यादा latency वाले नोड को खोजें
  • उसकी trace timeline में ड्रिल करें
  • सबसे लंबा segment आपका suspect है
AWS पर एप्लिकेशन डिप्लॉय करना

पूरी रिक्वेस्ट में ट्रेसिंग

  • API Gateway, Lambda, और downstream कॉल्स सभी traced हैं
  • हर एक अपना segment उसी ट्रेस में जोड़ता है
  • एक trace ID लॉग्स और segments को साथ बाँधता है
  • हर रिक्वेस्ट के लिए end-to-end visibility

End-to-end distributed ट्रेस: API Gateway से Lambda, फिर DynamoDB और external API तक, हर segment हेडर में एक trace ID दिख रहा है जो सभी लॉग्स और segments को जोड़ता है

AWS पर एप्लिकेशन डिप्लॉय करना

अभ्यास करते हैं!

AWS पर एप्लिकेशन डिप्लॉय करना

Preparing Video For Download...