विलंबता के प्रमुख बिंदुओं के लिए वितरित ट्रेसिंग
किसी एक अनुरोध को सेवाओं के बीच ट्रेस करते हुए उसकी विलंबता के प्रमुख बिंदु पहचानना और उत्पादन डिबगिंग के दौरान ट्रेस का लॉग से सहसंबंध करना सीखें
विलंबता के प्रमुख बिंदुओं के लिए वितरित ट्रेसिंग, CoddyKit पर उत्पादन डिबगिंग और घटना-प्रतिक्रिया मार्गदर्शिका का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह उत्पादन डिबगिंग और घटना-प्रतिक्रिया मार्गदर्शिका सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। उत्पादन डिबगिंग और घटना-प्रतिक्रिया मार्गदर्शिका पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
वितरित ट्रेसिंग क्यों
माइक्रोसर्विस सिस्टम में किसी एक उपयोगकर्ता अनुरोध का विस्तार दर्जनों सेवाओं तक हो सकता है। जब वह धीमा हो, तो दोष किस सेवा का है?
वितरित ट्रेसिंग किसी अनुरोध से साझा trace_id जोड़कर और उसके संपर्क में आने वाले प्रत्येक ऑपरेशन के लिए एक स्पैन दर्ज करके इसका उत्तर देती है।
- ट्रेस = पूरे अनुरोध की यात्रा
- स्पैन = कार्य की समयबद्ध एक इकाई
स्पैन की संरचना
प्रत्येक स्पैन में समय और संदर्भ होता है, जिससे आप कॉल ट्री का पुनर्निर्माण कर सकते हैं।
trace_idएक अनुरोध के सभी स्पैन को जोड़ता हैspan_idऑपरेशन की पहचान करता हैparent_idदर्ज करता है कि उसे किसने कॉल किया- आरंभ/समाप्ति टाइमस्टैम्प अवधि बताते हैं
{
"trace_id": "abc123",
"span_id": "s2",
"parent_id": "s1",
"name": "db.query.users",
"start_ms": 1042,
"end_ms": 1310
}संदर्भ आगे भेजना
स्पैन को एक ही ट्रेस में जोड़ने के लिए trace_id को अनुरोध के साथ आगे बढ़ना चाहिए। इसे संदर्भ प्रसार कहा जाता है।
अधिकांश सिस्टम बाहर जाने वाली HTTP कॉल्स और संदेश मेटाडेटा में traceparent (W3C Trace Context) जैसे मानक हेडर डालते हैं।
यदि प्रसार टूट जाए, तो ट्रेसेज़ खंडित हो जाते हैं और कॉल ट्री बिखर जाता है।
GET /orders HTTP/1.1
traceparent: 00-abc123-s1-01कोड में इंस्ट्रूमेंटेशन जोड़ना
जिन ऑपरेशनों को आप मापना चाहते हैं, उनके चारों ओर स्पैन बनाएँ। स्वचालित इंस्ट्रूमेंटेशन सामान्य लाइब्रेरीज़ को संभालता है; मैन्युअल स्पैन आपके अपने तर्क को दर्ज करते हैं।
नीचे दिया गया उदाहरण OpenTelemetry की परंपराओं का उपयोग करके किसी फ़ंक्शन को स्पैन में लपेटता है।
with tracer.start_as_current_span('charge_card') as span:
span.set_attribute('amount', 42)
result = payment.charge(42)
span.set_attribute('status', result.status)वॉटरफ़ॉल पढ़ना
ट्रेसिंग यूआई स्पैन को वॉटरफ़ॉल के रूप में दिखाते हैं। जो सबसे चौड़ी पट्टी किसी चाइल्ड के इंतज़ार में नहीं है, वह आम तौर पर आपका मुख्य अड़चन-बिंदु होती है।
- बिना चाइल्ड वाली लंबी पट्टियाँ = स्थानीय CPU/IO लागत
- चाइल्ड से भरी लंबी पट्टियाँ = आगे की सेवा की लागत
- स्पैन के बीच के अंतराल = कतार में प्रतीक्षा या बिना ट्रेस किया गया कार्य
सैंपलिंग की रणनीतियाँ
हर अनुरोध का ट्रेस रखना महँगा है। सैंपलिंग मात्रा को संभालने योग्य बनाए रखती है।
- हेड सैंपलिंग: शुरुआत में निर्णय लें (जैसे 5% रखें)
- टेल सैंपलिंग: ट्रेस समाप्त होने के बाद निर्णय लें और धीमे या त्रुटिपूर्ण ट्रेसेज़ रखें
विलंबता की डिबगिंग के लिए, अधिक अवधि पर टेल सैंपलिंग अत्यंत उपयोगी है।
ट्रेसेज़ और लॉग्स को संबंधित करना
ट्रेस बताता है कहाँ; लॉग्स बताते हैं क्यों। हर लॉग पंक्ति पर सक्रिय trace_id दर्ज करें, ताकि धीमे स्पैन से सीधे उसके लॉग्स तक जा सकें।
import logging
logging.info('cache miss', extra={'trace_id': current_trace_id()})स्पैन की विशेषताएँ और घटनाएँ
विशेषताएँ स्पैन पर लगे कुंजी/मान टैग होते हैं (डेटाबेस कथन, HTTP स्थिति)। घटनाएँ स्पैन के भीतर समय-चिह्नित बिंदु होती हैं (पुनःप्रयास, लॉक प्राप्त)।
समृद्ध विशेषताएँ आपको ट्रेसेज़ को 'वे सभी स्पैन जिनमें db.rows > 10000 है' जैसे फ़िल्टर करने देती हैं और ट्रेसिंग को क्वेरी उपकरण में बदल देती हैं।
span.add_event('retry', {'attempt': 2})
span.set_attribute('db.rows', 12044)महत्वपूर्ण पथ ढूँढना
कुल विलंबता सभी स्पैन का योग नहीं होती। समानांतर स्पैन एक-दूसरे पर आच्छादित होते हैं। महत्वपूर्ण पथ उन स्पैन की श्रृंखला है जो वास्तव में आरंभ से अंत तक का समय निर्धारित करती है।
महत्वपूर्ण पथ पर न होने वाले स्पैन को अनुकूलित करने से अनुरोध तेज़ नहीं होगा।
अतुल्यकालिक कार्य और कतारों की ट्रेसिंग
कतारों में उपभोक्ता, उत्पादक के बाद चलता है। संदर्भ को संदेश के भीतर आगे भेजें, ताकि उपभोक्ता स्पैन पैरेंट-चाइल्ड संबंध के बजाय follows-from संबंध के रूप में पिछले स्पैन से जुड़ सके।
producer: msg.headers['traceparent'] = inject_context()
consumer: ctx = extract_context(msg.headers)डिबगिंग कार्यप्रवाह
जब उत्पादन वातावरण में कोई एंडपॉइंट धीमा हो, तो इसे इस तरह पूरा करें:
- उस एंडपॉइंट के ट्रेसेज़ को अवधि के अनुसार क्रमबद्ध करके फ़िल्टर करें
- सबसे धीमा ट्रेस खोलें और वॉटरफ़ॉल पढ़ें
- महत्वपूर्ण पथ पर प्रमुख स्पैन पहचानें
trace_idके माध्यम से उस स्पैन के लॉग्स पर जाएँ- सुधार करें, फिर विलंबता वितरण दोबारा जाँचें
त्वरित जाँच
वितरित ट्रेसिंग की अपनी समझ जाँचें।
पुनरावलोकन
आपने सीखा कि वितरित ट्रेसिंग trace_id, स्पैन और संदर्भ प्रसार का उपयोग करके सेवाओं के बीच किसी अनुरोध का पुनर्निर्माण कैसे करती है।
- मुख्य अड़चनें खोजने के लिए वॉटरफ़ॉल पढ़ें
- कुल स्पैन समय के बजाय महत्वपूर्ण पथ पर ध्यान दें
- धीमे ट्रेसेज़ रखने के लिए टेल सैंपलिंग का उपयोग करें
- पूरी कहानी समझने के लिए स्पैन को लॉग्स से संबंधित करें
एआई शिक्षक के साथ उत्पादन डिबगिंग और घटना-प्रतिक्रिया मार्गदर्शिका सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 12
- पाठ
- 48
अक्सर पूछे जाने वाले प्रश्न
क्या “विलंबता के प्रमुख बिंदुओं के लिए वितरित ट्रेसिंग” पाठ निःशुल्क है?
हाँ — उत्पादन डिबगिंग और घटना-प्रतिक्रिया मार्गदर्शिका अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “विलंबता के प्रमुख बिंदुओं के लिए वितरित ट्रेसिंग” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। उत्पादन डिबगिंग और घटना-प्रतिक्रिया मार्गदर्शिका पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“विलंबता के प्रमुख बिंदुओं के लिए वितरित ट्रेसिंग” में मैं क्या सीखूँगा?
किसी एक अनुरोध को सेवाओं के बीच ट्रेस करते हुए उसकी विलंबता के प्रमुख बिंदु पहचानना और उत्पादन डिबगिंग के दौरान ट्रेस का लॉग से सहसंबंध करना सीखें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ उत्पादन डिबगिंग और घटना-प्रतिक्रिया मार्गदर्शिका का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या उत्पादन डिबगिंग और घटना-प्रतिक्रिया मार्गदर्शिका शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर उत्पादन डिबगिंग और घटना-प्रतिक्रिया मार्गदर्शिका शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।
“विलंबता के प्रमुख बिंदुओं के लिए वितरित ट्रेसिंग” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस उत्पादन डिबगिंग और घटना-प्रतिक्रिया मार्गदर्शिका पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर उत्पादन डिबगिंग और घटना-प्रतिक्रिया मार्गदर्शिका पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- सक्रिय अनुप्रयोगों का दूरस्थ दोष-निवारण
- कोर डंप से घटना-पश्चात दोष-निवारण
- मेमोरी और CPU प्रोफ़ाइलिंग तकनीकें
- विलंबता के प्रमुख बिंदुओं के लिए वितरित ट्रेसिंग