الانتقال إلى المحتوى الرئيسي
يجمع Event deltas بين خريطة حرارية لزمن الاستجابة وتحليل تلقائي للسمات، بحيث يمكنك رؤية شكل بيانات التتبّع لديك ومعرفة ما الذي يميّز الـ spans البطيئة، من دون كتابة استعلامات. وهناك ثلاث طرق لاستخدامه:
  • Distribution mode (always on): عندما لا يكون هناك أي تحديد على الخريطة الحرارية، يُعرض توزيع القيم لكل سمة ضمن مجموعة الـ spans الحالية. وهذا مفيد لاكتشاف القيم السائدة أو النادرة بشكل غير معتاد (القيم الشاذة في عدد القيم المميّزة).
  • Comparison mode: اسحب مستطيلاً على الخريطة الحرارية لمقارنة الـ spans الموجودة داخله (Selection) بكل ما هو خارجها (Background). وهذا مفيد لعزل الانحرافات.
  • Iterative drill-down: انقر على أي شريط للتصفية حسب تلك القيمة (أو لاستبعادها). تُعاد رسم الخريطة الحرارية استنادًا إلى المجموعة المصفّاة، بحيث يمكنك مواصلة تضييق النطاق حتى يصبح السبب واضحًا.
في لقطة الشاشة أعلاه، تقع الحافة اليمنى للخريطة الحرارية عند نحو 10 ms، لا عند خط الأساس البالغ 1 ms الذي استمر طوال الصباح. ولا يزال التدهور مستمرًا، لذا فنحن نرصد الحالة هنا في منتصف الحادث.

المتطلبات الأساسية

تتطلب Event deltas مصدر بيانات Trace يتضمن تعبيرًا للمدة. ستعمل أي خدمة مُزوَّدة بأدوات OpenTelemetry وتنتج بيانات span. وهي متاحة في جميع عمليات نشر ClickStack (Managed، مفتوح المصدر، ClickHouse Cloud).

البدء

  1. من القائمة المنسدلة Data Source، حدِّد مصدرًا يحتوي على traces. أسماء المصادر اختيارية؛ والمهم هو أن يكون المصدر مُعدًّا على أنه من النوع Trace. لا تكون علامة التبويب Event Deltas مفعّلة إلا لهذه المصادر.
  2. في قسم Analysis Mode، انقر على علامة التبويب Event Deltas.
يُعد Event Deltas وضع تحليل مستقلًا إلى جانب Results Table وEvent Patterns. وعند التبديل إليه، يتحول العرض إلى heatmap وجدول لتحليل attribute، مع الاحتفاظ بعوامل تصفية البحث وtime range المحددَين، ويمكنك العودة في أي وقت.

الخريطة الحرارية

تعرض الخريطة الحرارية وحدات span عبر بُعدين:
  • المحور X: الوقت
  • المحور Y: قيمة رقمية، وتكون افتراضيًا مدة الـ span بالمللي ثانية (مقياس لوغاريتمي)
تشير شدة اللون إلى عدد الأحداث في كل نطاق؛ وكلما كان اللون أكثر سطوعًا، زاد عدد وحدات span. يمكنك تمييز الأنماط مباشرةً من الخريطة الحرارية: زمن استجابة ثنائي النمط، وارتفاعات مفاجئة في زمن الاستجابة في أوقات محددة، ونطاق من وحدات span البطيئة باستمرار، أو نطاق بطيء يرتفع تدريجيًا بمرور الوقت (تراجع تدريجي متفاقم). لاستقصاء منطقة ما، انقر واسحب لرسم مستطيل فوقها. يصبح ذلك التحديد الخاص بك ويحوّل التحليل أدناه إلى وضع المقارنة.

وضع التوزيع: شذوذ الكاردينالية

من دون أي تحديد على الخريطة الحرارية، تعرض لوحة التحليل مخططًا شريطيًا واحدًا لكل سمة، محسوبًا عبر جميع امتدادات التتبع المطابقة. ويظهر في وسيلة الإيضاح كل امتدادات التتبع (كما هو موضح في لقطة شاشة النظرة العامة أعلاه). تُرتَّب السمات بحسب مدى تركز قيمها: فالسمات التي تهيمن عليها قلة من القيم تظهر أولًا، بينما تُؤخَّر السمات المنتظمة وعالية الإنتروبيا في الترتيب. استخدم وضع التوزيع عندما تريد فهم شكل الكاردينالية في بياناتك:
  • القيم المرتفعة: ما الخدمات أو نقاط النهاية أو رموز الحالة أو المضيفات التي تهيمن على مجموعة امتدادات التتبع لديك؟ غالبًا ما يكشف ذلك عن tenant أو version أو route واحد يستحوذ على معظم حركة المرور.
  • القيم المنخفضة: القيم التي تظهر ولكن نادرًا. قد يكون رمز حالة يظهر في 0.5% فقط من امتدادات التتبع، أو مضيف واحد نادر الظهور، هو الإشارة الأكثر إثارة للاهتمام. ففي الذيل الطويل تختبئ التراجعات والجهات المسببة للمشكلات.
اجمع ذلك مع شريط البحث لتضييق المجموعة أولًا (مثلًا: امتدادات التتبع الخاصة بالأخطاء فقط، أو امتدادات العميل فقط، أو نقطة نهاية واحدة فقط)، ثم اقرأ التوزيعات لتلك المجموعة الفرعية.

وضع المقارنة: الانحرافات عن الوضع الطبيعي

انقر واسحب لرسم مستطيل على الخريطة الحرارية للدخول إلى وضع المقارنة. تصبح الـ spans المحددة هي Selection (أشرطة برتقالية)، بينما يصبح كل ما عداها Background (أشرطة خضراء). بعد ذلك، يعرض كل مخطط للسمات كلتا المجموعتين جنبًا إلى جنب، مرتبتين بحيث تظهر أولًا السمات ذات أكبر تباعد. وتُعدّ القيمة الموجودة بشكل شبه حصري في أحد الجانبين، أو غير الموجودة في أحدهما، أقوى مؤشر على موضع الاختلاف. يغيّر شكل المستطيل الذي ترسمه طبيعة السؤال الذي تطرحه. وفيما يلي الشكلان الأكثر شيوعًا.

حالة الاستخدام 1: قبل التراجع وبعده

عندما تُظهر الخريطة الحرارية ارتفاعًا تدريجيًا في زمن الاستجابة عبر المخطط الزمني (يزداد سُمك النطاق البطيء، أو يرتفع النطاق الساطع، أو تفصل نقطة انعطاف واضحة بين فترة سليمة وأخرى متدهورة)، اسحب مستطيلاً من نقطة بداية الارتفاع إلى الحافة اليمنى من النافذة. ولجعل المقارنة أدق، اضبط أسفل المستطيل عند خط الأساس السليم بدلًا من أسفل المحور: فهذا يعزل وحدات التتبّع الأبطأ من المعتاد فعلًا داخل النافذة المتدهورة، بدلًا من أن يشمل وحدات تتبّع سريعة لا تزال سليمة لكنها تقع ضمن النطاق الزمني نفسه. تُرتَّب أشرطة السمات أسفل الخريطة الحرارية بحيث تظهر أكبر الفروقات أولًا. في هذا المثال، تُبرز المخططات في الصف العلوي أقوى الإشارات: إذ يُظهر كلٌّ من SpanKind وSpanName وScopeName انقسامًا حادًا بين البرتقالي والأخضر بين التحديد البطيء والخلفية السليمة. وعند قراءتها معًا، فإنها تكشف بوضوح ما الذي تغيّر عند نقطة الانعطاف. هذا هو الشكل المناسب عندما تريد طرح سؤال: “ما الذي تغيّر؟” وهناك صيغة أدق تستخدم سير العمل نفسه: عندما تظهر مجموعة صغيرة من وحدات التتبّع البطيئة داخل نطاق هادئ بخلاف ذلك (اندفاعة قصيرة عند الحافة اليمنى، أو تجمّع في منتصف فترة مستقرة)، ارسم مربعًا صغيرًا حول ذلك التجمّع فقط بدلًا من ذلك. ويغيّر الشكل طبيعة السؤال: فالشريط العمودي يسأل ما الذي تغيّر عبر الزمن؛ أما المربع الصغير المركّز فيسأل ما الذي يميّز هذا التجمّع.

حالة الاستخدام 2: البطيء مقابل السريع

عندما تُظهر الخريطة الحرارية مجموعتين من الكمون منفصلتين بوضوح على محور المدة، اسحب مستطيلاً عريضًا يمتد عبر النطاق الزمني بالكامل، لكنه يغطي فقط الشريط العلوي المنفصل بوضوح. عندها تصبح المجموعة البطيئة هي Selection، وتصبح الكتلة السريعة هي Background. ارسم المستطيل بإحكام حول الشريط العلوي، مع فجوة أفقية واضحة بينه وبين الكتلة الكثيفة. أما المستطيل الفضفاض الذي يتداخل مع المجموعة السريعة، فيُضعف هذا التباين. ويُعد خط السقف عند 100 ثانية دالًّا بحد ذاته: فالخط الأفقي الثابت عند رقم دائري يُعد علامة على مهلة ثابتة. وإذا لم تكن هناك سمة في مقاطع التتبّع تميّز بين المجموعتين بوضوح، فهذه أيضًا نتيجة مفيدة، لأنها توجهك إلى المقاييس على مستوى المضيف وبيئة التشغيل (توقفات GC، تزاحم I/O، كمون المجدول، تأثيرات الذاكرة المخبئية الباردة، الجيران المزعجون) بدلًا من سمات مقاطع التتبّع. هذا هو الشكل المناسب عندما تريد أن تسأل: «ما الذي يجعل مقاطع التتبّع البطيئة مختلفة عن السريعة؟» بدلًا من ملاحقة حالة شذوذ محددة. فالسمة المتباينة تشير إلى سبب مرتبط بمسار في الشيفرة أو بالمدخلات، أما المقارنة المسطحة فتشير إلى سبب على مستوى النظام.

التعمق التدريجي

تكون أوضاع المقارنة والتوزيع أكثر فاعلية عند استخدامها بشكل متسلسل. انقر على أي شريط لفتح نافذة منبثقة تتضمن ثلاثة إجراءات:
  • تصفية: الاحتفاظ فقط بـ spans التي تحمل هذه القيمة
  • استبعاد: إزالة spans التي تحمل هذه القيمة
  • نسخ: نسخ القيمة إلى الحافظة
بعد تطبيق عامل تصفية أو استبعاد، يُلغى تحديد الخريطة الحرارية، وتُعاد إعادة رسمها استنادًا إلى المجموعة الجديدة، ويُستأنف وضع التوزيع على تلك المجموعة المُصفّاة. راقب كيف يتبدل شكل الخريطة الحرارية؛ فالتصفية الناجحة تزيل النطاق البطيء بوضوح، أو تطوي الانقسام ثنائي النمط، أو تُسطّح الانحراف الصاعد. كرر العملية: حدِّد القيمة التالية المشبوهة، وصفِّها، ثم انظر إلى الخريطة الحرارية الجديدة وإلى التوزيعات الجديدة. وغالبًا ما تكفي بضع تكرارات لحصر سبب التراجع في سمة واحدة أو سمتين.
حاويات أخرى (N) المجمّعة التي تدمج القيم منخفضة التكرار ليست قابلة للنقر. لتصفية قيمة معيّنة ضمن تلك الحاوية، استخدم شريط البحث مباشرةً.
عندما تصبح المجموعة صغيرة بما يكفي، انتقل إلى علامة التبويب جدول النتائج لفحص traces الفردية؛ وستنتقل عوامل التصفية معك.

تخصيص الخريطة الحرارية

تفتح أيقونة الترس في أعلى يمين الخريطة الحرارية درج إعدادات العرض.
المعاملالافتراضيالوصف
ScaleLogيناسب Log نطاقات latency الواسعة؛ بينما يكون Linear أفضل للتوزيعات الضيقة والمتجانسة.
Value(Duration)/1e6أي expression رقمية: حجم الاستجابة، أو معدل الخطأ، أو attribute مخصصة للـ span.
Countcount()aggregation المستخدمة للتلوين. بدّلها إلى avg() أو sum() أو p95() أو expressions مثل countDistinct(field).
انقر Apply لتحديث الخريطة الحرارية؛ وسيتبعه تحليل attributes أدناه.
الخريطة الحرارية في dashboardsالخريطة الحرارية نفسها متاحة أيضًا كـ dashboard tile، وهو ما يفيد عندما تريد مراقبة شكل التوزيع بمرور الوقت خارج مسار drill-down الخاص بـ Event Deltas.
من السيناريوهات الشائعة التي قد تستدعي تغيير هذه القيم الافتراضية:
  • بدّل Scale إلى Linear عندما يكون نطاق latency ضيقًا (على سبيل المثال، service تعمل فيها جميع spans بين 5 و50 مللي ثانية). يهدر المقياس اللوغاريتمي النطاق الرأسي عند الطرف العلوي حيث لا توجد بيانات.
  • اعرض شيئًا غير المدة على المحور Y. يتيح لك ضبط Value على SpanAttributes.http.response.size فحص الاستجابات الكبيرة البطيئة؛ كما أن expression مثل if(StatusCode = 'Error', 1, 0) تعرض تكرار الأخطاء بمرور الوقت عبر services.
  • لوّن بناءً على شيء غير العدد. يؤدي ضبط Count على p95(Duration) إلى تلوين كل bucket وفق tail latency بدلًا من الحجم، ما يكشف الجيوب النادرة ولكن البطيئة التي قد يطمسها العرض القائم على العدد. كما يميّز countDistinct(TraceId) بين حجم traces وحجم spans عندما ينتج trace واحد عددًا كبيرًا من spans.

نصائح للاستخدام الفعّال

هناك بعض الممارسات التي تجعل Event deltas أكثر فائدةً بدرجة كبيرة:
  • احصر التحليل في خدمة واحدة أولًا. يختلف زمن الاستجابة كثيرًا بين الخدمات، وخلطها يحجب الإشارة. استخدم شريط البحث لتضييق النطاق إلى ServiceName واحد (أو نقطة نهاية واحدة) قبل أن تبدأ، حتى تعكس الخريطة الحرارية والتوزيعات مجموعةً قابلةً للمقارنة.
  • اختر تحديدات ذات تباين بصري واضح. يعمل وضع المقارنة بأفضل شكل عندما يكون نطاق التحديد متميزًا بصريًا عن الخلفية، مثل فترة تدهور تبدأ في لحظة واضحة، أو ذيل بطيء منفصل بوضوح عن الجزء الأكبر. أما التحديدات التي تتداخل كثيرًا مع بقية البيانات فعادةً ما تُظهر ضجيجًا بدلًا من الانحراف الحقيقي.
  • كرّر: تصفية، خريطة حرارية، تصفية. نادرًا ما يكشف تحديد واحد السبب. تعامل مع المقارنة الأولى بوصفها فرضية، ثم صفِّ بناءً على القيمة الأكثر اختلافًا، وأعِد قراءة الخريطة الحرارية والتوزيعات الجديدة. وعادةً ما تؤدي دورتان أو ثلاث إلى حصر التراجع في الأداء في سمة واحدة أو سمتين.
  • استخدم وضع التوزيع من دون تحديد عندما لا يكون هناك تباين واضح بعد (أنت تعلم بوجود مشكلة لكن الخريطة الحرارية تبدو متجانسة). طبّق مرشح فرضية، مثل امتدادات الأخطاء فقط، أو امتدادات العميل فقط، أو نقطة نهاية واحدة فقط، ودع توزيعات السمات توجهك إلى القيم الأعلى تأثيرًا قبل أن ترسم أي مستطيل.

استكشاف الأخطاء وإصلاحها

تبويب Event Deltas غير ظاهر

لا يظهر تبويب Event Deltas ضمن Analysis Mode إلا عند تحديد source من نوع Trace يتضمن تعبيرًا للمدة. تحقّق من أن data source لديك مُعدًّا كنوع Trace، وأنه يحتوي على بيانات span تتضمن معلومات عن المدة.

تُظهر مخططات السمات نتائج قليلة أو لا تُظهر أي نتائج

إذا كانت العينة صغيرة جدًا (أقل من بضع عشرات من spans)، فقد لا تكون التوزيعات ذات دلالة إحصائية. وسّع النطاق الزمني أو خفّف قيود البحث.
آخر تعديل في ٢٥ يونيو ٢٠٢٦