1
1
---
2
2
title : サンプリング
3
- description : サンプリングと、OpenTelemetryで利用可能なさまざまなサンプリングオプションについて学びましょう 。
3
+ description : サンプリングとOpenTelemetryで利用可能なさまざまなサンプリングオプションについて学びましょう 。
4
4
weight : 80
5
- default_lang_commit : 825b6e2
5
+ default_lang_commit : 8d115a9df96c52dbbb3f96c05a843390d90a9800
6
6
---
7
7
8
- 分散トレースでは 、リクエストが分散システム内のあるサービスから別のサービスに移動するのを観察できます。
9
- サービスの接続を理解したり、レイテンシーの問題を診断したり、その他の利点の中でも、多くの理由で非常に実用的です 。
8
+ 分散システムでは、 [ トレース ] ( /docs/concepts/signals/traces ) で 、リクエストが分散システム内のあるサービスから別のサービスに移動するのを観察できます。
9
+ トレーシングはシステムの高レベルな分析と詳細な分析の両方において、非常に実用的です 。
10
10
11
- しかし、リクエストの大半がステータスコード200番で成功し、許容できないレイテンシーやエラーもなく終了する場合、そのようなデータが本当に必要でしょうか。
12
- 問題はここからです。
13
- 正しいインサイトを見つけるために、常に大量のデータが必要なわけではありません。
14
- _ 適切なデータのサンプリングが必要なだけです。_
11
+ しかし、リクエストの大半が成功し、許容できるレイテンシーでエラーもなく終了する場合、アプリケーションとシステムを有意義に観測するのに、トレースの 100 % を必要としません。
12
+ 適切なサンプリングが必要なだけです。
15
13
16
14
![ 図は、すべてのデータをトレースする必要はなく、データのサンプルで十分であることを示しています。] ( traces-venn-diagram.svg )
17
15
18
- サンプリングの背後にある考え方は、オブザーバビリティバックエンドに送信するスパンを制御することであり、その結果、インジェストコストを削減することです。
19
- 異なる組織には、 _ なぜ_ サンプリングしたいのかだけでなく、 _ 何_ をサンプリングしたいのかについて独自の理由があるでしょう。
20
- あなたは、サンプリング戦略を以下のようにカスタマイズしたいかもしれません。
21
-
22
- - ** コスト管理** : テレメトリーの量が多ければ、テレメトリーバックエンドベンダーやクラウドプロバイダーから、すべてのスパンをエクスポートして保存するために、多額の料金を請求されるリスクがあります。
23
- - ** 関心のあるトレースに注目する** : たとえば、フロントエンドチームは特定のユーザー属性を持つトレースだけを見たいかもしれません。
24
- - ** ノイズをフィルタリングする** : たとえば、ヘルスチェックを除外したい場合などです。
25
-
26
- ## 用語解説
16
+ ## 用語解説 {#terminology}
27
17
28
18
サンプリングについて議論する際には、一貫した用語を使用することが重要です。
29
19
トレースまたはスパンは、「サンプリングされた」または「サンプリングされていない」と見なされます。
@@ -35,6 +25,50 @@ _適切なデータのサンプリングが必要なだけです。_
35
25
誰かが「データをサンプリングアウトしている」と言ったり、処理またはエクスポートされていないデータは「サンプリングされた」と見なされると言ったりするのを見かけるかもしれません。
36
26
これらは間違った表現です。
37
27
28
+ ## なぜサンプリングするのか? {#why-sampling}
29
+
30
+ サンプリングは、可視性を失わずにオブザーバビリティのコストを削減する最も効果的な方法の 1 つです。
31
+ データのフィルタリングや集約といった、より安価な他の方法もありますが、これらの方法はアプリケーションやシステムの動作を詳細に分析する際に重要な代表性の概念に準拠していません。
32
+
33
+ 代表性は、小さな集合が大きな集合を正確に表しているという原則です。
34
+ さらに、代表性は数学的に検証可能であるため、小さなデータサンプルが大きなグループを正確に反映していることに高い確信を持つことができます。
35
+
36
+ 加えて、多くのデータを生成するほど、代表的なサンプルを得るために必要なデータ量は実際には少なくなります。
37
+ 高トラフィックのシステムでは、1 % 以下のサンプリング率でも残りの 99 % のデータを非常に正確に表現できることが一般的です。
38
+
39
+ ### サンプリングすべきとき {#when-to-sample}
40
+
41
+ もし、次のいずれかを基準の満たす場合、サンプリングを検討してください。
42
+
43
+ - 1 秒あたり 1000 件以上のトレースを生成している。
44
+ - ほとんどのトレースデータが健全なトラフィックを表しており、データの変動が少ない。
45
+ - エラーや高レイテンシーなど、問題が発生していることを示す共通の指標がある。
46
+ - エラーやレイテンシー以外にも、関連するデータを特定するためのドメイン固有の基準を持っている。
47
+ - データをサンプリングするか破棄するかを決定する共通のルールを述べることができる
48
+ - サービスごとに識別が可能であり、高トラフィックと低トラフィックのサービスが別々にサンプリングされる
49
+ - サンプリングされなかったデータを(「念のため」のシナリオのために)低コストのストレージシステムに保存できる
50
+
51
+ 最終的に、全体の予算を検討してください。
52
+ オブザーバビリティの予算に限りがあるが、適切なサンプリングに時間を費やす余裕がある場合、サンプリングは一般的にその価値があります。
53
+
54
+ ### サンプリングすべきでないとき {#when-not-to-sample}
55
+
56
+ サンプリングが適切でない場合もあります。
57
+ 次の基準のいずれかを満たしてるため、サンプリングを避けようとしている可能性があります。
58
+
59
+ - 非常に少ないデータ(1 秒あたり 10 件あたりの小さなトレースまたは、それよりも少ない)を生成している。
60
+ - オブザーバビリティデータを集約でのみ使用し、事前にデータを集計できる。
61
+ - 規則などの事情によりデータの削除が禁止されている(そして、低コストのストレージにサンプルされていなデータを保存できない)。
62
+
63
+ 最後に、サンプリングに関する 3 つのコストを考慮してください。
64
+
65
+ 1 . テイルサンプリングプロキシといった、データを効果的にサンプリングするための計算リソースの直接的なコスト。
66
+ 2 . 関連するアプリケーション、システム、データが増えるにつれて、効果的なサンプリング手法を維持するための間接的なエンジニアリングのコスト。
67
+ 3 . 効果的でないサンプリング技術によって重要な情報を見逃すことによる間接的な機会コスト。
68
+
69
+ サンプリングは、オブザーバビリティのコストを削減する効果的な方法である一方で、うまく動作しなかったときに予期しない他のコストをもたらす可能性があります。
70
+ オブザーバビリティバックエンド、データの性質、そして効果的なサンプリングの試みによっては、代わりにベンダーのまたはセルフホスティング時のコンピューティングを使用して、オブザーバビリティにさらに多くのリソースを割り当てる方が安価になる可能性があります。
71
+
38
72
## ヘッドサンプリング {#head-sampling}
39
73
40
74
ヘッドサンプリングは、サンプリングの決定をできるだけ早期に行うために用いられるサンプリング技術です。
@@ -53,11 +87,10 @@ _適切なデータのサンプリングが必要なだけです。_
53
87
- トレース収集パイプラインのどの時点でも可能
54
88
55
89
ヘッドサンプリングの主な欠点は、トレース全体のデータに基づいてサンプリングの決定を下すことができないことです。
56
- つまり、ヘッドサンプリングは雑な実装としては有効ですが、システム全体の情報を考慮しなければならないサンプリング戦略にはまったくもって不十分です。
57
90
たとえば、ヘッドサンプリングを使用して、エラーを含むすべてのトレースを確実にサンプリングすることは不可能です。
58
- そのためには、テイルサンプリングが必要である 。
91
+ そのためには、テイルサンプリングが必要です 。
59
92
60
- ## テイルサンプリング
93
+ ## テイルサンプリング {#tail-sampling}
61
94
62
95
テイルサンプリングとは、トレース内のすべてのスパンまたはほとんどのスパンを考慮して、トレースのサンプリングを決定することです。
63
96
テイルサンプリングは、ヘッドサンプリングでは不可能な、トレースの異なる部分から得られる特定の基準に基づいてトレースをサンプリングするオプションを提供します。
@@ -69,39 +102,39 @@ _適切なデータのサンプリングが必要なだけです。_
69
102
- エラーを含むトレースを常にサンプリングする
70
103
- 全体的なレイテンシーに基づいてトレースをサンプリングする
71
104
- トレース内の1つまたは複数のスパンにおける特定の属性の存在または値に基づいてトレースをサンプリングする。たとえば、新しくデプロイされたサービスからより多くのトレースをサンプリングする。
72
- - 特定の基準に基づいてトレースに異なるサンプリングレートを適用する
105
+ - 低トラフィックのサービスのトレースと高トラフィックのサービスのトレースのように、 特定の基準に基づいてトレースに異なるサンプリングレートを適用する
73
106
74
- お分かりのように、テイルサンプリングは、より高度なことを可能にします 。
107
+ お分かりのように、データのサンプリング手法において、テイルサンプリングはより高度なことを可能にします 。
75
108
テレメトリーをサンプリングしなければならない大規模なシステムでは、データ量とそのデータの有用性のバランスを取るために、ほとんどの場合、テイルサンプリングを使用する必要があります。
76
109
77
110
今日のテイルサンプリングには、主に3つの欠点があります。
78
111
79
- - テイルサンプリングの実施は難しいです。
80
- 利用可能なサンプリング技術の種類にもよりますが、それは必ずしも「一度設定したら放置できる」ものではありません。
81
- システムが変われば、サンプリング戦略も変わります。
82
- 大規模で洗練された分散システムでは、サンプリング戦略を実装するルールも大規模で洗練されたものになります。
83
- - テイルサンプリングの運用は難しいものです。
84
- テイルサンプリングを実装するコンポーネントは、大量のデータを受け入れ、保存できるステートフルなシステムでなければなりません。
85
- トラフィックパターンによっては、リソースの利用方法が異なる数十、数百のノードが必要になることもあります 。
86
- さらに、テイルサンプラーは、受信するデータ量に追いつけない場合、計算量の少ないサンプリング技術に「フォールバック」する必要があるかもしれません。
87
- このような要因から、テイルサンプリングコンポーネントを監視して、正しいサンプリング決定を行うために必要なリソースを確保することが重要です。
88
- - テイルサンプラーは、今日、ベンダー固有のテクノロジーの領域で終わることが多いです。
89
- オブザーバビリティに有料のベンダーを使用している場合、もっとも効果的なテイルサンプリングのオプションは、そのベンダーが提供するものに限定される可能性があります。
112
+ 1 . テイルサンプリングの実施は難しいです。
113
+ 利用可能なサンプリング技術の種類にもよりますが、それは必ずしも「一度設定したら放置できる」ものではありません。
114
+ システムが変われば、サンプリング戦略も変わります。
115
+ 大規模で洗練された分散システムでは、サンプリング戦略を実装するルールも大規模で洗練されたものになります。
116
+ 2 . テイルサンプリングの運用は難しいものです。
117
+ テイルサンプリングを実装するコンポーネントは、大量のデータを受け入れ、保存できるステートフルなシステムでなければなりません。
118
+ トラフィックパターンによっては、リソースの利用方法が異なる数十、数百の計算ノードが必要になることもあります 。
119
+ さらに、テイルサンプラーは、受信するデータ量に追いつけない場合、計算量の少ないサンプリング技術に「フォールバック」する必要があるかもしれません。
120
+ このような要因から、テイルサンプリングコンポーネントを監視して、正しいサンプリング決定を行うために必要なリソースを確保することが重要です。
121
+ 3 . テイルサンプラーは、今日、ベンダー固有のテクノロジーの領域で終わることが多いです。
122
+ オブザーバビリティに有料のベンダーを使用している場合、もっとも効果的なテイルサンプリングのオプションは、そのベンダーが提供するものに限定される可能性があります。
90
123
91
124
最後に、システムによっては、テイルサンプリングがヘッドサンプリングと併用されることがあります。
92
125
たとえば、非常に大量のトレースデータを生成する一連のサービスは、最初にヘッドサンプリングを使ってトレースのごく一部だけをサンプリングし、テレメトリーパイプラインの後半でテイルサンプリングを使って、バックエンドにエクスポートする前に、より洗練されたサンプリング決定を行うことができます。
93
126
これは、テレメトリーパイプラインが過負荷にならないように保護するために、しばしば行われます。
94
127
95
- ## サポート
128
+ ## サポート {#support}
96
129
97
- ### コレクター
130
+ ### コレクター {#collector}
98
131
99
132
OpenTelemetryコレクターには、以下のサンプリングプロセッサーがあります。
100
133
101
134
- [ Probabilistic Sampling Processor(確率的サンプリングプロセッサー)] ( https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/probabilisticsamplerprocessor )
102
135
- [ Tail Sampling Processor(テイルサンプリングプロセッサー)] ( https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/tailsamplingprocessor )
103
136
104
- ### 言語SDK
137
+ ### 言語SDK {#language-sdks}
105
138
106
139
OpenTelemetry API & SDK の各言語固有の実装については、それぞれのドキュメントページでサンプリングのサポート状況を確認出来ます。
107
140
0 commit comments