以前の投稿でGrafana CloudにOpentelemetry dataを撃って保存して見ることをした。
グラパナクラウド無料版を使用すると、月にログとトレースに50GB程度を与える。ユーザーがいくらなくてTraceがあまり積み重ねる(あるいはログを枯渇する)サービスならばそのまま使用してもよいが、少し規模がある状態で導入すればログがあまりにも積み重ねてしまうかと怖い。Sampling
サンプリングはなぜ必要ですか?
上の図ですべての円(トレース)を保存する必要はありません。重要なトレース(エラー、またはあまりにも実行時間が長い)と全体を代表する一部のサンプル(OK traceの一部)だけを保存すれば十分です。 Samplingの種類
サンプリングは大きくHead Sampling、Tail Samplingに分けることができる。
ヘッドサンプリング一番前からサンプリングすることを言う。代表的にはただ確率的にサンプリングすることがある。全体のトレースで10パーセントだけ残し、残りはトレースしないのだ。
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), });
サンプリングするためにStatefulの状態を維持していなければ実行が難しい。
Tail SamplingをCustom Span Processorを実装して実装しましょう。
SamplingSpanProcessorの実装
OtelSDKアップデート
以上がNestJS + Opentelemetry (サンプリング)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。