- Distribution mode (always on): عندما لا يكون هناك أي تحديد على الخريطة الحرارية، يُعرض توزيع القيم لكل سمة ضمن مجموعة الـ spans الحالية. وهذا مفيد لاكتشاف القيم السائدة أو النادرة بشكل غير معتاد (القيم الشاذة في عدد القيم المميّزة).
- Comparison mode: اسحب مستطيلاً على الخريطة الحرارية لمقارنة الـ spans الموجودة داخله (Selection) بكل ما هو خارجها (Background). وهذا مفيد لعزل الانحرافات.
- Iterative drill-down: انقر على أي شريط للتصفية حسب تلك القيمة (أو لاستبعادها). تُعاد رسم الخريطة الحرارية استنادًا إلى المجموعة المصفّاة، بحيث يمكنك مواصلة تضييق النطاق حتى يصبح السبب واضحًا.
المتطلبات الأساسية
البدء
- من القائمة المنسدلة Data Source، حدِّد مصدرًا يحتوي على traces. أسماء المصادر اختيارية؛ والمهم هو أن يكون المصدر مُعدًّا على أنه من النوع Trace. لا تكون علامة التبويب Event Deltas مفعّلة إلا لهذه المصادر.
- في قسم Analysis Mode، انقر على علامة التبويب Event Deltas.
الخريطة الحرارية
- المحور X: الوقت
- المحور Y: قيمة رقمية، وتكون افتراضيًا مدة الـ span بالمللي ثانية (مقياس لوغاريتمي)
وضع التوزيع: شذوذ الكاردينالية
- القيم المرتفعة: ما الخدمات أو نقاط النهاية أو رموز الحالة أو المضيفات التي تهيمن على مجموعة امتدادات التتبع لديك؟ غالبًا ما يكشف ذلك عن tenant أو version أو route واحد يستحوذ على معظم حركة المرور.
- القيم المنخفضة: القيم التي تظهر ولكن نادرًا. قد يكون رمز حالة يظهر في
0.5%فقط من امتدادات التتبع، أو مضيف واحد نادر الظهور، هو الإشارة الأكثر إثارة للاهتمام. ففي الذيل الطويل تختبئ التراجعات والجهات المسببة للمشكلات.
وضع المقارنة: الانحرافات عن الوضع الطبيعي
حالة الاستخدام 1: قبل التراجع وبعده
SpanKind وSpanName وScopeName انقسامًا حادًا بين البرتقالي والأخضر بين التحديد البطيء والخلفية السليمة. وعند قراءتها معًا، فإنها تكشف بوضوح ما الذي تغيّر عند نقطة الانعطاف.
هذا هو الشكل المناسب عندما تريد طرح سؤال: “ما الذي تغيّر؟” وهناك صيغة أدق تستخدم سير العمل نفسه: عندما تظهر مجموعة صغيرة من وحدات التتبّع البطيئة داخل نطاق هادئ بخلاف ذلك (اندفاعة قصيرة عند الحافة اليمنى، أو تجمّع في منتصف فترة مستقرة)، ارسم مربعًا صغيرًا حول ذلك التجمّع فقط بدلًا من ذلك. ويغيّر الشكل طبيعة السؤال: فالشريط العمودي يسأل ما الذي تغيّر عبر الزمن؛ أما المربع الصغير المركّز فيسأل ما الذي يميّز هذا التجمّع.
حالة الاستخدام 2: البطيء مقابل السريع
التعمق التدريجي
- تصفية: الاحتفاظ فقط بـ spans التي تحمل هذه القيمة
- استبعاد: إزالة spans التي تحمل هذه القيمة
- نسخ: نسخ القيمة إلى الحافظة
حاويات أخرى (N) المجمّعة التي تدمج القيم منخفضة التكرار ليست قابلة للنقر. لتصفية قيمة معيّنة ضمن تلك الحاوية، استخدم شريط البحث مباشرةً.
تخصيص الخريطة الحرارية
| المعامل | الافتراضي | الوصف |
|---|---|---|
| Scale | Log | يناسب Log نطاقات latency الواسعة؛ بينما يكون Linear أفضل للتوزيعات الضيقة والمتجانسة. |
| Value | (Duration)/1e6 | أي expression رقمية: حجم الاستجابة، أو معدل الخطأ، أو attribute مخصصة للـ span. |
| Count | count() | aggregation المستخدمة للتلوين. بدّلها إلى avg() أو sum() أو p95() أو expressions مثل countDistinct(field). |
- بدّل 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.
نصائح للاستخدام الفعّال
- احصر التحليل في خدمة واحدة أولًا. يختلف زمن الاستجابة كثيرًا بين الخدمات، وخلطها يحجب الإشارة. استخدم شريط البحث لتضييق النطاق إلى
ServiceNameواحد (أو نقطة نهاية واحدة) قبل أن تبدأ، حتى تعكس الخريطة الحرارية والتوزيعات مجموعةً قابلةً للمقارنة. - اختر تحديدات ذات تباين بصري واضح. يعمل وضع المقارنة بأفضل شكل عندما يكون نطاق التحديد متميزًا بصريًا عن الخلفية، مثل فترة تدهور تبدأ في لحظة واضحة، أو ذيل بطيء منفصل بوضوح عن الجزء الأكبر. أما التحديدات التي تتداخل كثيرًا مع بقية البيانات فعادةً ما تُظهر ضجيجًا بدلًا من الانحراف الحقيقي.
- كرّر: تصفية، خريطة حرارية، تصفية. نادرًا ما يكشف تحديد واحد السبب. تعامل مع المقارنة الأولى بوصفها فرضية، ثم صفِّ بناءً على القيمة الأكثر اختلافًا، وأعِد قراءة الخريطة الحرارية والتوزيعات الجديدة. وعادةً ما تؤدي دورتان أو ثلاث إلى حصر التراجع في الأداء في سمة واحدة أو سمتين.
- استخدم وضع التوزيع من دون تحديد عندما لا يكون هناك تباين واضح بعد (أنت تعلم بوجود مشكلة لكن الخريطة الحرارية تبدو متجانسة). طبّق مرشح فرضية، مثل امتدادات الأخطاء فقط، أو امتدادات العميل فقط، أو نقطة نهاية واحدة فقط، ودع توزيعات السمات توجهك إلى القيم الأعلى تأثيرًا قبل أن ترسم أي مستطيل.