以前の投稿でGrafana CloudにOpentelemetry dataを撮影して保存して見ることをしました。
グラパナクラウド無料版を使用すると、月にログとトレースに50GB程度を与える。ユーザーがいくらなくてTraceがあまり積み重ねる(あるいはログを枯渇する)サービスならばそのまま使用してもよいが、少し規模のある状態で導入すればログがあまりにも積み重ねてしまうのではないかと怖い。Sampling
Why need Sampling
上記の図では、すべての円(トレース)を保存する必要はありません。重要なトレース(エラー、またはあまりにも実行時間が長い)と全体を代表するいくつかのサンプル(OK traceの一部)だけを保存すれば十分です。
Samplingの種類
ヘッドサンプリング
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),
});
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), });
Tail SamplingをCustom Span Processorを実装して実装しましょう。
SamplingSpanProcessorの実装import { Context } from "@opentelemetry/api";
import {
SpanProcessor,
ReadableSpan,
スパン、
} from "@opentelemetry/sdk-trace-node";
/**
* Sampling span processor (including all error span and ratio of other spans)
*/
export class SamplingSpanProcessor implements SpanProcessor {
コンストラクタ(
private _spanProcessor: SpanProcessor,
private _ratio: number
){}
/**
* Forces to export all finished spans
*/
forceFlush(): Promise
OtelSDKアップデート
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{ 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(); } }
spanProcessors: [ new SamplingSpanProcessor( new BatchSpanProcessor(traceExporter), samplePercentage )、 ],
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3