في المنشور السابق، قمت بتصوير بيانات Opentelemetry وحفظها وعرضها في Grafana Cloud.
إذا كنت تستخدم الإصدار المجاني من Grafana Cloud، فستحصل على حوالي 50 جيجابايت من السجلات والتتبعات شهريًا. إذا كانت خدمة لا تتراكم الآثار (أو لا تسجل السجلات) بسبب عدم وجود العديد من المستخدمين، فيمكنك استخدامها فقط، ولكن إذا قدمتها على نطاق صغير، أخشى أن يتراكم عدد كبير جدًا من السجلات تنفجرأخذ العينات
لماذا تحتاج إلى أخذ العينات
ليست هناك حاجة لحفظ جميع الدوائر (التتبع) في الصورة أعلاه. يكفي تخزين الآثار المهمة فقط (الأخطاء، أو وقت التنفيذ الطويل جدًا) وبعض العينات التي تمثل الكل (بعض الآثار الجيدة
).
أنواع أخذ العيناتأخذ عينات الرأس
import { TraceIdRatioBasedSampler } from '@opentelemetry/sdk-trace-node'; const samplePercentage = 0.1; const sdk = new NodeSDK({ // Other SDK configuration parameters go here sampler: new TraceIdRatioBasedSampler(samplePercentage), });العيب
قد تكون أداة أخذ العينات الخلفية خاصة بالمورد.
الصورة الرمزية
إنشاء ملف sampling-span-processor.ts
استيراد { السياق } من "@opentelemetry/api"؛
يستورد {
معالج سبان,
قابل للقراءة,
فترة،
} من "@opentelemetry/sdk-trace-node";
/**
* معالج نطاق أخذ العينات (بما في ذلك نطاق الخطأ ونسبة النطاقات الأخرى)
*/
فئة التصدير SamplingSpanProcessor تنفذ SpanProcessor {
منشئ(
_spanProcessor الخاص: SpanProcessor؛
نسبة_الخاصة: الرقم
) {}
/**
* القوات لتصدير جميع الفترات الجاهزة
*/
forceFlush (): الوعد
import { Context } from "@opentelemetry/api"; import { SpanProcessor, ReadableSpan, Span, } from "@opentelemetry/sdk-trace-node"; /** * Sampling span processor (including all error span and ratio of other spans) */ export class SamplingSpanProcessor implements SpanProcessor { constructor( private _spanProcessor: SpanProcessor, private _ratio: number ) {} /** * Forces to export all finished spans */ forceFlush(): Promiseتحديث OtelSDK{ return this._spanProcessor.forceFlush(); } onStart(span: Span, parentContext: Context): void { this._spanProcessor.onStart(span, parentContext); } shouldSample(traceId: string): boolean { let accumulation = 0; for (let idx = 0; idx { return this._spanProcessor.shutdown(); } }
تحديث المعالجات في main.ts.
المعالجات الممتدة: [
جديدSamplingSpanProcessor (
new BatchSpanProcessor(traceExporter);
SamplePercentage
)،
]،
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3