वितरित निशान
वितरित निशान
1) यह क्यों और क्या है
वितरित ट्रेसिंग पूरे अनुरोध पथ के साथ संचालन को जोड़ ने का एक तरीका है: फ्रंट → एपीआई गेटवे → माइक्रोसर्विसेस → डेटाबेस/कैश → ब्रोकर्स → जाब्स/पाइपलाइनें।
परिणाम स्पैन (स्पैन) से एक ट्रेस है, जहां प्रत्येक अवधि विशेषताओं, घटनाओं और स्थिति के साथ घटक के संचालन को पकड़ ती है। यह आरसीए को तेज करता है, एसएलओ रखने में मदद करता है और एमटीटीआर को कम करता है।
मुख्य उद्देश्य:- महत्वपूर्ण पथ और बाधाओं की दृश्यता।
- कारणों (स्पैन) और विवरण (लॉग) के साथ लक्षणों (मैट्रिक्स) का सहसंबंध।
- रेट्रे, कतारों, डीएलक्यू, फैन-आउट, विलंबता के "आरी" के विश्लेषण।
2) ट्रेस डेटा मॉडल
ट्रेस - कॉल ग्राफ 'ट्रेस _ आईडी' के साथ।
स्पैन - नाम: 'नाम', 'दयालु' (SERVER/CLIENT/PRODUCER/CONSUBER/INTERAL), 'स्टार्ट/एंड', 'स्टेटस', 'इवेंट्स', 'लिंक्स []।
गुण - मूल्य कुंजी (मार्ग, db। सिस्टम, संदेश। सिस्टम, बादल। क्षेत्र, आदि)।
घटनाएँ - तत्काल टैग स्पैन के अंदर (उदाहरण के लिए, 'रीट्री', 'कैश _ मिस')।
स्पैन लिंक - "माता-पिता-बच्चे" (बची, रेट्राई, फैन-इन/आउट) के बाहर कनेक्शन।
संसाधन - प्रक्रिया/सेवा मेटाडेटा ('सेवा। नाम ', संस्करण, पर्यावरण)।
3) संदर्भ और सहनशीलता
3. 1 W3C ट्रेस संदर्भ
शीर्षक:- 'ट्रेसपेरेंट': 'संस्करण-ट्रेसिड-स्पैनिड-फ्लैग्स' (झंडे में नमूना शामिल है)।
- 'ट्रैसेस्टेट': विक्रेता-विशिष्ट राज्य (न्यूनतम)।
- सामान - व्यावसायिक संदर्भ के लिए कुंजी (सीमित, कोई पीआईआई/रहस्य नहीं)।
3. 2 फेंकने का संदर्भ
HTTP: 'traceparent '/' tracestate'; जीआरपीसी: मेटाडेटा; WebSocket: जब उन्नयन और संदेशों में;
संदेश: हेडर में (काफ्का/एनएटीएस/रैबिटएमक्यू) - निर्माता के साथ मूल संदर्भ को बचाएं और उपभोक्ता के साथ स्थानांतरण करें।
आधार: संदर्भ को "कैरी" न करें - हम विशेषताओं को स्पैन (क्वेरी, पंक्तियों, डीबी) में लॉग करते हैं। सिस्टम), लेकिन मूल्य नहीं।
4) नमूना: कैसे नहीं जाना है
प्रमुख नमूना: संभाव्य/नियमों द्वारा (मार्ग, किरायेदार, समापन बिंदु)।
पूंछ का नमूना (कलेक्टर पर): "दिलचस्प" ट्रेल्स को बचाएं - त्रुटियां, लंबी p95/p99, दुर्लभ रास्ते।
उदाहरण: हिस्टोग्राम मेट्रिक्स विशिष्ट 'ट्रेस _ आईडी' के संदर्भों को संग्रहीत करता है।
सिफारिश: संयोजन - सिर 5-20% + पूंछ 5xx/टाइमआउट/p99 के लिए 100% नियम।
5) गुण और वर्गीकरण (न्यूनतम आवश्यक)
सामान्य:- 'service। नाम ',' सेवा। संस्करण ',' तैनाती। पर्यावरण ',' बादल। क्षेत्र ',' http। मार्ग ',' http। विधि ',' http। status_code', 'db। सिस्टम ',' db। कथन '(छोटा/डेटा के बिना),' संदेश। सिस्टम ',' मैसेजिंग। ऑपरेशन ',' सहकर्मी। सेवा ',' नेट। सहकर्मी। नाम ',' किरायेदार। आईडी ',' अनुरोध। id '।
व्यावसायिक लेबल: साफ, पीआईआई-मुक्त। उदाहरण: 'क्रम। खंड ',' योजना। टियर '।
6) अतुल्यकालिक लिपियाँ, कतारें और बैच
उत्पादक → उपभोक्ता: संदर्भ के साथ अवधि निर्माता बनाएं; संदेश हेडर में (ट्रेसपेरेंट, सामान)। उपभोक्ता लिंक से निर्माता तक सर्वर/उपभोक्ता-अवधि शुरू करता है (यदि कोई सख्त पदानुक्रम नहीं है)।
फैन-आउट: एक इनपुट - कई आउटपुट - चाइल्ड स्पैन या लिंक।
बैच: उपभोक्ता एन संदेशों का एक विस्फोट पढ़ ता है - एन अलग-अलग संदर्भों के लिए प्रत्येक संस्करण आईडी या 'लिंक' के लिए 'इवेंट्स' के साथ एक अवधि।
DLQ: अलग स्पैनमेसिंग। dlq। 'с कारण и गिनती प्रकाशित करें।
रेट्राई: 'इवेंट: रीट्री' + 'रीट्री। गिनती 'विशेषता; अधिमानतः कोशिश करने के लिए एक नया चाइल्ड स्पैन।
7) लॉग और मैट्रिक्स के साथ एकीकरण
हम 'trace _ id '/' span _ id' के साथ JSON लिखते हैं - स्पैन से हम क्लिक करके लॉग पर जाते हैं।
RED/USE मेट्रिक्स में उदाहरण होते हैं - p99 चोटियों से हम "खराब" स्पैन पर जाते हैं।
निशान घटनाओं के माध्यम से तकनीकी संकेत (निर्भरता त्रुटियां) और व्यवसाय संकेत (रूपांतरण) उत्पन्न करते हैं।
8) प्रदर्शन और लागत
घटना का नमूना और थ्रॉटलिंग।
विशेषताओं की कार्डिनैलिटी में कमी (no 'user _ id '/' session _ id' as लेबल!)।
निर्यातक द्वारा संपीड़न/कसाई; टाइमआउट सीमाओं का निर्यात करें।
भंडारण: गर्म 1-7 दिन, फिर - इकाइयाँ/केवल "समस्या" ट्रेल्स।
खर्च की श्रेणियां: कलेक्टर, इंडेक्स, भंडारण, एग्रेस।
9) सुरक्षा और गोपनीयता
पारगमन में: टीएलएस 1। 3/mTLS kollektor↔agenty; आराम पर: एन्क्रिप्शन, निजी कुंजी ("एन्क्रिप्शन इन ट्रांजिट/एट रेस्ट" देखें)।
पीआईआई और रहस्य: विशेषताओं/घटनाओं में न लिखें; उत्पादक पर टोकन/मास्किंग।
बहु-किरायेदारी: 'किरायेदार। आईडी 'एक संसाधन लेबल और रिक्त स्थान, पढ़ ने की नीतियों के अलगाव के रूप में; ऑडिटिंग ट्रेस एक्सेस (ऑडिटिंग और अनमॉडिफाइड लॉग देखें)।
10) कार्यान्वयन योजनाएं (संदर्भ)
10. 1 ओपनटेलीमेट्री एसडीके (स्यूडोकोड)
python from opentelemetry import trace from opentelemetry. sdk. trace import TracerProvider from opentelemetry. sdk. resources import Resource from opentelemetry. sdk. trace. export import BatchSpanProcessor from opentelemetry. exporter. otlp. proto. grpc. trace_exporter import OTLPSpanExporter
provider = TracerProvider(resource=Resource. create({
"service. name":"checkout","service. version":"1. 12. 0","deployment. environment":"prod"
}))
provider. add_span_processor(BatchSpanProcessor(OTLPSpanExporter(endpoint="otel-collector:4317", insecure=True)))
trace. set_tracer_provider(provider)
tr = trace. get_tracer("checkout")
with tr. start_as_current_span("POST /pay", attributes={
"http. route":"/pay","http. method":"POST","tenant. id":"t-42"
}):
business logic, external API call and pass DB
10. 2 ओटेल कलेक्टर - पूंछ का नमूना (टुकड़ा)
yaml processors:
tailsampling:
decision_wait: 2s policies:
- type: status_code status_codes: [ERROR]
- type: latency threshold_ms: 900
- type: probabilistic sampling_percentage: 10 exporters:
otlphttp: { endpoint: http://trace-backend:4318 }
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch, tailsampling]
exporters: [otlphttp]
10. 3 काफ्का - संदर्भ हस्तांतरण (अवधारणा)
निर्माता: हेडर 'ट्रेसपेरेंट', 'सामान' जोड़ें।
उपभोक्ता: यदि संदेश एक नई धारा शुरू करता है - हेडर से लिंक से संदर्भ तक एक नया सर्वर/उपभोक्ता अवधि।
11) डेटा/ईटीएल и एमएल
बैच पाइपलाइनों के लिए: बैच पर स्पैन/' डेटासेट के साथ विभाजन। कलश ',' चलाओ। आईडी ',' पंक्तियाँ। में/आउट ',' ताजगी। अंतराल '।
एमएल के लिए: प्रशिक्षण/निष्कर्ष, मॉडल संस्करण, विलंबता, फीचर स्टोर के फैलाव।
वंश से लिंक: 'चलाएँ। id 'и' डेटासेट। कलश आपको ट्रेस से डेटा मूल ग्राफ तक कूदने के लिए।
12) ट्रेस प्लेटफॉर्म एसएलओ
उपलब्धता अंतर्ग्रहण: ≥ 99। 9%
अनुक्रमण में देरी: ≤ 60 s p95
हेड-सैंपल कवरेज: प्रमुख मार्गों का ≥ 5-10%
स्थिति ERROR के साथ ट्रेल्स की 100% बचत और "महत्वपूर्ण पथ" निर्देशिका के अनुसार विलंबता> सीमा के साथ
प्लेटफ़ॉर्म अलर्ट: ड्रॉप्स की वृद्धि, निर्यात टाइमआउट, इंडेक्सर लैग, कार्डिनैलिटी ओवरहीटिंग।
13) परीक्षण और सत्यापन
सीआई में ट्रेस अनुबंध: प्रमुख समापन बिंदुओं पर स्पैन की उपस्थिति, अनिवार्य विशेषताएं, सही 'ट्रेसपेरेंट' गेटवे/प्रॉक्सी के माध्यम से उड़ ता है।
सिंथेटिक/रम के नमूने: बाहर से ट्रेल्स इकट्ठा करें।
अराजकता/घटनाएं: निर्भरता को अक्षम करना, यह जाँचना कि पूंछ का नमूना "त्रुटियों को उठाता है"।
बिक्री में धुआं: रिलीज के बाद - "कोई स्पैन हैं" और अनुकरणीय → ट्रेस।
14) चेकलिस्ट
बेचने से पहले
- W3C ट्रेस संदर्भ हर जगह फेंका जाता है; संदेश हेडर के लिए।
- बेसिक हेड सैंपलिंग सक्षम है; 5xx/p99 के लिए पूंछ नियम कॉन्फ़िगर किए गए हैं।
- अनिवार्य विशेषताएं मार्ग, विधि, स्थिति, सेवा हैं। संस्करण, किरायेदार। आईडी।
- JSON 'trace _ id '/' span _ id' के साथ लॉग करता है, उदाहरण के साथ मेट्रिक्स।
- पीआईआई सैनिटाइज़र; विश्राम अभिगम नीतियों पर जाने/जाने पर एन्क्रिप्शन।
- डैशबोर्ड: "महत्वपूर्ण पथ", "निर्भरता त्रुटियां", "रेट्रास/टाइमआउट"।
ऑपरेशन
- विशेषताओं की कार्डिनैलिटी की मासिक समीक्षा; कोटा।
- एसएलओ द्वारा ट्यूनिंग पूंछ का नमूना (कम शोर, सभी "गर्म" - नमूने में)।
- संक्रमण मीट्रिक → अनुकरणीय → ट्रेस → लॉग के साथ प्रशिक्षण आरसीए।
- कतारों, डीएलक्यू, ईटीएल नौकरियों के लिए कवर की जाँच।
15) Runbook'и
आरसीए: p99 पर वृद्धि/वेतन
1. RED डैशबोर्ड खोलें; बिन p99 से ट्रेस करने के लिए अनुकरणीय पर जाते हैं।
2. एक "संकीर्ण" क्लाइंट-स्पैन खोजें (उदाहरण के लिए, 'गेटवे। कॉल '), चेक' रेट्री। गिनती ', टाइमआउट।
3. सेवा संस्करणों/निर्भरताओं, क्षेत्र/क्षेत्र की तुलना
4. गिरावट (कैशिंग प्रतिक्रिया/आरपीएस सीमा) सक्षम करें, निर्भरता मालिकों को सूचित करें।
5. फिक्स के बाद - आरसीए और अनुकूलन टिकट।
DLQ उछाल
1. 'मेसेजिंग द्वारा ट्रेस फ़िल्टर। dlq। प्रकाशित करें '।
2. कारणों (घटनाओं) की जाँच करें, रिलीज के साथ सहसंबद्ध करें।
3. पुनर्प्रसंस्करण शुरू करें, अस्थायी रूप से उपभोक्ता के लिए समय बढ़ाएं, डाउनस्ट्रीम मालिकों को सूचित करें
16) बार-बार त्रुटियाँ
गेटवे/दलालों के माध्यम से कोई संदर्भ भविष्यवाणी नहीं है। समाधान: मिडिलवेयर/इंटरसेप्टर्स, एकल पुस्तकालय।
सभी ट्रेल्स 100%। महंगी और व्यर्थ - उपयोग पूंछ का नमूना।
'ट्रेस _ आईडी' के बिना लॉग। सहसंबंध → MTTR ↑ खो गया है।
विशेषताओं में पीआईआई। मास्क/टोकनाइज़; केवल तकनीकी संदर्भ रखें।
"म्यूट" पृष्ठभूमि जैब्स। बैच/विभाजन और 'run में स्पैन जोड़ें। id '।
नामकरण विसंगति। स्पैन और विशेषता कुंजी का शब्दकोश भरें।
17) एफएक्यू
प्रश्न: क्या हेड या टेल सैंपलिंग बेहतर है?
A: संयोजन। सिर आधार परत देता है, पूंछ विसंगतियों/त्रुटियों के संरक्षण की गारंटी देती है।
प्रश्न: मैं कठोर पदानुक्रम के बिना काफ्का के माध्यम से कैसे पता लगाऊं?
A: PRODUCER और कंज्यूमर के बीच स्पैन लिंक का उपयोग करें; संदर्भ - हेडर में।
प्रश्न: संवेदनशील SQL का क्या करना है?
A: 'db। कथन 'छोटा/सामान्यीकृत (कोई मूल्य नहीं), या' db। ऑपरेशन '+ आयाम/समय।
प्रश्न: आप व्यावसायिक मैट्रिक्स से कैसे संबंधित हैं?
A: PII (प्लान/सेगमेंट) के बिना डोमेन की विशेषताएं जोड़ें, अवधि के भीतर "व्यावसायिक चरणों" की घटनाओं का उपयोग करें और रूपांतरण मेट्रिक्स से अनुकरणीय तक जाएं।
संबंधित सामग्री:- "अवलोकन: लॉग, मैट्रिक्स, निशान"
- "ऑडिट और अपरिवर्तनीय लॉग"
- "ट्रांजिट/एट रेस्ट एन्क्रिप्शन" में
- "डेटा ओरिजिन (वंश)"
- "डिजाइन द्वारा गोपनीयता (GDPR)"
- "गुप्त प्रबंधन"