الانتقال إلى المحتوى الرئيسي
يمكن للخدمات ذات الإنتاجية العالية إنتاج ملايين spans في الثانية. ونظرًا إلى أن تخزين كل span مكلف، فعادةً ما تشغّل الفرق معالج tail-sampling في OpenTelemetry Collector للاحتفاظ بـ span واحد فقط من كل N. ويحمل كل span مُحتفَظ به سمة SampleRate تسجّل القيمة N. بمجرد أخذ عينات من البيانات، تصبح عمليات التجميع المباشرة غير صحيحة: إذ يعيد count() عددًا من الأحداث أقل بمقدار N مما حدث فعليًا، ويصبح كل من sum() وavg() متحيزًا، كما تنحرف القيم المئينية. وتعرض لوحات المعلومات أعداد الطلبات والإنتاجية ومعدلات الأخطاء على نحو منخفض ومضلل. يحل ClickStack هذه المشكلة باستخدام محرك استعلامات يراعي أخذ العينات. فعندما تُعدّ تعبير معدل أخذ العينات على مصدر تتبّع، يعيد منشئ الاستعلامات كتابة عمليات التجميع في SQL بحيث يزِن كل span وفقًا لمعدل أخذ العينات الخاص به — وذلك عبر لوحات المعلومات والتنبيهات وعمليات البحث المخصّصة.

آلية العمل

عندما يكون sampleRateExpression مُعَدًّا في مصدر التتبّع، يغلّفه ClickStack على النحو التالي:
greatest(toUInt64OrZero(toString(expr)), 1)
تُسند إلى الـ spans التي لا تحتوي على سمة SampleRate قيمة وزن افتراضية قدرها 1، لذا تعطي البيانات غير الخاضعة لأخذ العينات النتائج نفسها التي تعطيها الاستعلامات الأصلية. ثم يعيد منشئ الاستعلامات صياغة عمليات التجميع:
التجميعقبلبعد (مصحح وفق أخذ العينات)
countcount()sum(weight)
count + conditioncountIf(cond)sumIf(weight, cond)
avgavg(col)sum(col * weight) / sum(weight)
sumsum(col)sum(col * weight)
quantile(p)quantile(p)(col)quantileTDigestWeighted(p)(col, weight)
min / maxدون تغييردون تغيير
count_distinctدون تغييردون تغيير
تستخدم المئينات مع أخذ العينات quantileTDigestWeighted، وهو ملخّص T-Digest تقريبي. النتائج متقاربة لكنها ليست مطابقة تمامًا.

تهيئة تعبير معدل أخذ العينات

افتح مصدر التتبّع في إعدادات المصدر، ثم أدخل تعبير ClickHouse الذي يُقيَّم إلى معدل أخذ العينات لكل span في حقل تعبير معدل أخذ العينات. على سبيل المثال، إذا كان معالج tail-sampling في OpenTelemetry يكتب المعدل في SpanAttributes['SampleRate']: بعد إتمام التهيئة، ستطبّق جميع المخططات ولوحات المعلومات والتنبيهات ولوحات معلومات الخدمة تلقائيًا عمليات التجميع الموزونة وفق معدل أخذ العينات. ولا حاجة إلى أي تغييرات في الاستعلامات الفردية.
آخر تعديل في ٢٥ يونيو ٢٠٢٦