التعقب الموزع
(القسم: التكنولوجيا والهياكل الأساسية)
موجز موجز
توفر الآثار الموزعة إجابة على السؤال حول مكان ولماذا يضيع الوقت على طول مسار الطلب عبر البوابة وواجهة برمجة التطبيقات وقوائم الانتظار وقواعد البيانات ومقدمي الخدمات الخارجيين (PSP/استوديوهات الألعاب). OpenTelemetry (OTel) هو معيار SDK/وكيل/بروتوكول مفتوح يجمع بين المسارات والمقاييس والسجلات. في iGaming، يعد أداة أساسية للحفاظ على p95/p99، وتوطين مشكلات الدفع بسرعة وتحديد الاختناقات قبل ذروة البطولات.
1) مفاهيم OTEL
تتبع - المسار الكامل للعملية (الإيداع، السعر، السحب).
Span - منطقة العمل (معالج HTTP، طلب SQL، قائمة الانتظار/مكالمة المزود).
السمات - قيمة المفتاح مع التفاصيل ('صافي. نظير. الاسم '،' db. ، "psp. الطريق ").
الأحداث - الأحداث الفورية (التراجع، الوقت المستقطع، تفويت ذاكرة التخزين المؤقت).
روابط - رابط لآثار أخرى (مهمة لـ async/قائمة الانتظار).
البيانات الوصفية المتعلقة بالموارد والعمليات: 'الخدمة. اسم '،' خدمة. ، 'نشر. البيئة «،» السحابة. المنطقة ".
2) انتشار السياق
استخدم سياق تتبع W3C:
traceparent: 00-<trace_id>-<span_id>-01 tracestate:...
بالإضافة إلى ذلك - الأمتعة للمفاتيح الآمنة (على سبيل المثال، «المستأجر»، «الطريق»)، لا تضع PII هناك.
مكان ثقب السياق: بوابة API → RPCs الداخلية → المنتج للوقوف في طابور → المستهلك → HTTP الخارجي (PSP/مزودي).
3) الاتفاقيات الدلالية (الحد الأدنى الإلزامي)
HTTP/RPC: 'http. ، 'http. الطريق، 'http. status_code'.
DB/cache: 'db. ('mysql'/' postresql'/' redis')،' db. بيان '(مقنع)،' db. '.
قوائم الانتظار: "الرسائل. ('كافكا '/' رابيتمق')، 'الرسائل. «،» الرسائل. عملية '(عملية' إرسال '/').
المدفوعات: "psp. الطريق، 'psp. المدفوعات. id '(اسم مستعار)،' مبلغ '،' عملة '.
مجال iGaming: "لعبة. المزود '،' لعبة. session_id' (هاش)، 'لاعب. id_hash'.
→ التصنيف الواحد قابلية مقارنة لوحات القيادة والبحث السريع عن الأسباب.
4) أخذ العينات: كيف لا تغرق في البيانات
قائمة على الرأس
بسيطة ورخيصة ؛ مناسبة للتدفق العام.
ناقص - يمكنك أن تفقد المسارات البطيئة/الخاطئة «المثيرة للاهتمام».
قائم على الذيل (جامع в)
يتم اتخاذ القرار بعد نهاية الفترات: نحن نحفظ فقط الأخطاء/القطاعات البطيئة/المهمة (VIP/المدفوعات).
مثالي لحمل الإنتاج: يقلل بشكل كبير من التكلفة بمحتوى المعلومات المرتفع.
- الرأس: 5-10٪ لتغطية «الخلفية».
- الذيل: خطأ 100٪ + p95 + بطيء + مسارات الدفع/إصدارات الكناري.
5) طوبولوجيات جامع القياس عن بعد المفتوحة
العامل الجانبي (على كل عقدة/جراب): القبول المحلي، الحد الأدنى الاحتياطي، التصدير إلى المجمع.
البوابة (المجموعة): أخذ عينات من الذيل، والتوجيه، والإثراء، والتصدير إلى Tempo/Jaeger/Zipkin/OTLP.
مثال: أخذ عينات من الذيل (شظية YAML)
yaml processors:
tailsampling:
decision_wait: 5s policies:
- name: errors type: status_code status_code:
status_codes: [ ERROR ]
- name: slow_p95 type: latency latency:
threshold_ms: 250
- name: payments type: string_attribute string_attribute:
key: service. name values: [ "payments-api", "payments-worker" ]
6) الارتباط بالمقاييس والسجلات
يضاف «تعقب »/« امتداد _ معرف» إلى كل مدخل سجل.
قم بتخزين مقاييس زمن الوصول على شكل مخطط نسيجي وتضمين نماذج - إشارة إلى الممثل 'trace _ id' لـ «قفزة» من p95-boket إلى أثر معين.
شروح الإصدار (Git SHA، إصدار الرسم البياني) - مثل الأحداث/الملصقات.
7) الأجهزة (اللغات ووكلاء السيارات)
اذهب (يدوي + تلقائي)
go tp:= sdktrace. NewTracerProvider(
sdktrace. WithBatcher(exporter),
sdktrace. WithResource(resource. NewWithAttributes(
semconv. SchemaURL,
semconv. ServiceName("payments-api"),
)),
)
otel. SetTracerProvider(tp)
ctx, span:= tracer. Start(ctx, "Deposit")
defer span. End()
span. SetAttributes(
attribute. String("psp. route","pspX"),
attribute. String("currency","EUR"),
)
جافا
Auto-agent '-javaagent: opentelemetry-javaagent. jar ', config via env (' OTEL _ SERVICE _ NAME ',' OTEL _ EXPORTER _ OTLP _ ENDPOINT ').
دليل - شروح/أداة أماكن البصل (برك JDBC، مخبأ).
عقدة. js/بايثون
أداة تلقائية مع ملحقات SDK + (Express/FastAPI/carery).
لقوائم الانتظار - أغلفة المنتج/المستهلك لوضع الرسائل. والروابط.
8) قوائم الانتظار و async: الامتدادات الصحيحة
المنتج («إرسال»): يمتد لإرساله إلى الموضوع/قائمة الانتظار.
المستهلك ('العملية'): نطاق جديد لمعالجة الرسائل من الارتباط إلى امتداد المنتج (حفظ العلاقة السببية دون 'التعقب _ id' المشترك).
السمات: "الرسائل. كافكا. التقسيم «،» الرسائل. الأرنب. routing_key'، "الرسائل. message_id'.
مع إعادة التصوير - الحدث «إعادة المحاولة»، محاولة العداد.
9) DB/Cache و N + 1
تمكين تتبع سائق قاعدة البيانات، تجميع الاستفسارات من نفس النوع إلى دفعات.
بالنسبة إلى Redis/cache، فإن السمات هي «مخبأ». ضرب '/' مخبأ. ملكة جمال '.
قم بإخراج الطلبات «الثقيلة» لفصل الامتدادات - يمكنك معرفة مكان p99.
10) مقدمو الخدمات الخارجيون: PSP/استوديوهات الألعاب
لف عملاء HTTP: "psp. المزود '،' psp. الطريق، "timeout _ ms'،" محاولة ".
رموز/أنواع خطأ السجل، ولكن ليس PII (رقم البطاقة، الرموز).
قارن الاستوديوهات/الطرق بـ «المدة» و «معدل الخطأ».
11) الواجهة و RUM
OTEL Web SDK: 'page _ view', 'resource _ load',' xhr '.
بيرس «traceparent» في الخلف لخياطة مسار المستخدم من خلال واجهة المستخدم → واجهة برمجة التطبيقات → قاعدة البيانات.
التجزئة حسب مقدمي الخدمات الجغرافية/الشبكية - الملصقات الاختيارية.
12) السلامة و PII
قناع الحقول ('db. بيان "محرر)، هاش" لاعب _ هوية ".
مناطق البيانات: "pii = true"، "region = EU/TR/LATAm'.
مراقبة الوصول إلى مسارات الدفع (على أساس الأدوار).
WORM/الاحتفاظ: فترات الاحتفاظ للآثار الحساسة، والحذف حسب السياسة.
13) الأداء والتكلفة
أخذ العينات حسب السياسة: «أخطاء + بطيئة + مدفوعات + إصدارات كناري».
تقليل المخططات النسيجية للمقاييس، وتفريغ السجل العدواني.
قيد الكاردينالية: لا تكتب «مستخدم _ معرف» كملصق متري.
عوازل/دفعات في جامع، ضغط OTLP.
14) لوحات المعلومات والتحليل
خريطة الخدمة: تبعيات الخدمة، تلوين الخطأ/الكمون.
قارن الإصدار: مراجعة مستقرة مقابل الكناري (p95، معدل الخطأ، conv المدفوعات).
أعلى الآثار البطيئة: على طول الطريق «/الإيداع »، القسم على طول PSP/المنطقة.
تأخر الانتظار: مسارات تأخير الاستهلاك العميق.
15) أمثلة على تكوينات جامعي
خطوط الأنابيب (المقاييس/المسارات/جذوع الأشجار، الشظايا)
yaml receivers:
otlp: { protocols: { http: {}, grpc: {} } }
processors:
batch:
memory_limiter:
limit_mib: 1024 spike_limit_mib: 256 attributes/payments:
actions:
- key: "psp. provider"
action: insert value: "pspX"
exporters:
otlp/traces: { endpoint: tempo:4317, tls: { insecure: true } }
otlp/metrics:{ endpoint: prometheus-otlp:4317, tls: { insecure: true } }
otlp/logs: { endpoint: loki-otlp:4317, tls: { insecure: true } }
service:
pipelines:
traces:
receivers: [ otlp ]
processors: [ memory_limiter, batch, tailsampling ]
exporters: [ otlp/traces ]
metrics:
receivers: [ otlp ]
processors: [ batch ]
exporters: [ otlp/metrics ]
logs:
receivers: [ otlp ]
processors: [ batch ]
exporters: [ otlp/logs ]
16) كتب التشغيل (السيناريوهات النموذجية)
أ) p99 النمو في «المدفوعات الواحدة»
1. فتح «الآثار البطيئة العلوية» → تقع في قاعدة بيانات/PSP.
2. إذا كانت مشكلة PSP هي ترجمة المسار، فمكّن من إعادة/مهلة.
3. تحقق من قائمة الانتظار "withdrawals' (تأخر)، زد المستهلكين.
ب) أخطاء ما بعد الإصدار 5xx
1. تصفية بواسطة 'خدمة. '.
2. قارن المستقر/الكناري ؛ العثور على المسامير في 'psp. الطريق ".
3. تجميد الترويج، التراجع (انظر Release Strategies/Rollbacks).
ج) المشتبه به N + 1
1. مسارات مع عدد كبير من امتدادات DB القصيرة.
2. مكّن التجميع/الفرح، أضف طبقة ذاكرة التخزين المؤقت.
17) قائمة التنفيذ المرجعية
1. تمكين OTEL SDK وسمات الموارد الموحدة ('الخدمة. الاسم '،' env '،' المنطقة ').
2. نشر سياق تتبع W3C من خلال جميع الطبقات وقوائم الانتظار.
3. المجموعة الدنيا من السمات الدلالية (HTTP/DB/quelue/PSP).
4. أخذ عينات الذيل: أخطاء، p95 +، مدفوعات، كناري.
5. Logs with 'trace _ id '/' span _ id', metrics with explars.
6. لوحات القيادة: خريطة الخدمة، مقارنة الإصدار، تدفق المدفوعات.
7. سياسات PII: الإخفاء، المناطق، الأدوار، الاحتفاظ.
8. الاختبارات/الحمل: تحقق من الارتباط واكتمال التتبع قبل الذروة.
9. التوليد التلقائي لوصلات كتاب التشغيل في التنبيهات.
10. Telemetry Cost and Cardinality Report (باللغة الإنجليزية).
18) أنتيباترن
آثار «فقط عند المدخل» بدون قواعد بيانات/قوائم انتظار → لا فائدة منها.
ينكسر نقص الانتشار في سلاسل → والسبب والنتيجة.
أخذ العينات العشوائية 1٪ بدون منطق الذيل → لا تلتقط بطيئة/خاطئة.
الجذوع بدون أثر _ معرف لا → ارتباط من طرف إلى طرف.
مؤشرات الأداء المكتسبة الخام في السمات/السجلات → مخاطر الامتثال.
الكاردينالية «إلى السقف» (المستخدم/الجلسة كعلامات قياسية) → انفجار في القيمة.
موجز
يحول OpenTelemetry إمكانية الملاحظة من مجموعة من الأدوات المتباينة إلى لغة أداء شاملة. مع الانتشار الصحيح للسياق، والدلالات الأنيقة، وأخذ عينات الذيل ومزيج من «المقاييس ↔ الآثار ↔ السجلات»، يحافظ فريق iGaming على p95/p99 تحت السيطرة، ويعزل الاختناقات بسرعة (DB، قوائم الانتظار، PSP) ويطلق بثقة الإصدارات حتى في ذروة حركة المرور.