このトピックでは、Application Real-Time Monitoring Service (ARMS) でサポートされているトレースサンプリングモードについて説明します。シナリオに基づいて適切なモードを選択することで、必要なトレースデータを低コストで取得できます。
一般的に、分散システムのトレースは多数が重複していたり、重要でないものが多いです。必要なトレースのみを監視し、監視コストを削減するには、サンプリングが必要です。
トレースサンプリングの基本原則は、最も関心があり、アクセスする可能性の高いトレースを優先的に記録することです。ARMSは、以下のトレースサンプリングモードを提供します。
固定レートサンプリング
固定レートサンプリングは、TraceIdの序数に基づいて、トレースデータの特定の割合を記録します。たとえば、固定レートが10%の場合、10個のトレースデータごとに1つが記録されます。固定レートサンプリングでは、トレースデータの不完全さを回避します。トレース全体のデータは保持または破棄されます。
固定レートサンプリングを設定するには、次の手順を実行します。
ARMS consoleにログオンします。左側のナビゲーションペインで、 を選択します。
アプリケーションリストページで、上部のナビゲーションバーでリージョンを選択し、管理するアプリケーションの名前をクリックします。
説明言語列に表示されるアイコンは、アプリケーションが記述されている言語を示します。
:Javaアプリケーション
:Goアプリケーション
:Pythonアプリケーション
ハイフン(-):Managed Service for OpenTelemetryで監視されているアプリケーション。
- 左側のナビゲーションペインで、アプリケーション設定をクリックします。表示されるページで、カスタム設定タブをクリックします。
サンプリングレート設定セクションで、サンプリングレートを設定できます。サンプリングレートモデルパラメータを固定サンプリングレートに設定します。サンプリングレート設定フィールドにパーセント値を入力します。たとえば、10と入力すると、サンプリングレートは10%になります。
説明変更はすぐに有効になります。アプリケーションを再起動する必要はありません。デフォルト値は10です。サンプリングレートを上げると、システムリソースの消費量が増加します。デフォルト値を維持することをお勧めします。
アダプティブサンプリング
監視コストをさらに削減し、トレースクエリエクスペリエンスを最適化するために、アプリケーション監視にアダプティブサンプリングモードが導入されました。アダプティブサンプリングは、複数のサンプリングポリシーに基づいて、トレースをサンプリングするかどうかを動的に決定します。これにより、低サンプリングレートと高サンプリングレート、低コストと包括的な監視のバランスが実現します。ビジネス トラフィックが多い場合、または大きく変化する場合に、アダプティブ サンプリング モードを使用することをお勧めします。
以下のサンプリングポリシーがサポートされています。特定のインターフェースのフルサンプリング、上位Nリクエストのサンプリング、すべてのインターフェースの最小サンプリング。
特定のインターフェースのフルサンプリング:名前、プレフィックス、またはサフィックスを入力して、トレースを完全にサンプリングするインターフェースを指定できます。指定されたインターフェースから送信されたリクエストについては、すべてのトレースがサンプリングされます。フルサンプリングを行うと、収集されるデータ量が増加します。フルサンプリングは、主要なインターフェースに対して、または必要な場合にのみ有効にしてください。
上位Nリクエストのサンプリング:Least Frequently Used(LFU)アルゴリズムに基づいて、インターフェースの特定のエントリに対してのみサンプリングが実行されます。これにより、収集されるデータがインターフェースのトラフィックとともに直線的に増加しないことが保証されます。
すべてのインターフェースの最小サンプリング:各インターフェースのトレースは、一定期間に少なくとも1回サンプリングされます。これにより、トラフィックが少ない場合でも、各インターフェースの貴重な情報が記録されます。
特定のインターフェースのフルサンプリング設定のみをきめ細かく変更できます。上位Nリクエストのサンプリングとすべてのインターフェースの最小サンプリングの設定は変更できません。
アダプティブサンプリングを有効にするには、次の手順を実行します。
ARMS consoleにログオンします。左側のナビゲーションペインで、 を選択します。
アプリケーションリストページで、上部のナビゲーションバーでリージョンを選択し、管理するアプリケーションの名前をクリックします。
説明言語列に表示されるアイコンは、アプリケーションが記述されている言語を示します。
:Javaアプリケーション
:Goアプリケーション
:Pythonアプリケーション
ハイフン(-):Managed Service for OpenTelemetryで監視されているアプリケーション。
- 左側のナビゲーションペインで、アプリケーション設定をクリックします。表示されるページで、カスタム設定タブをクリックします。
サンプリングレート設定セクションで、サンプリングレートモデルパラメータをアダプティブサンプリングに設定します。フルサンプリングのインターフェース名、プレフィックス、サフィックスを指定できます。
説明変更はすぐに有効になります。アプリケーションを再起動する必要はありません。アダプティブサンプリングモードは、ARMSエージェントV2.8.3以降でのみサポートされています。
ベーシックエディションサンプリング
ベーシックエディションサンプリングは、アプリケーション監視ベーシックエディションを有効にしているユーザーのみが利用できます。無料のサンプリングポリシーと複数のカスタムサンプリングポリシーが提供されています。
無料サンプリングポリシー:デフォルトでは、ARMSはアカウント内のすべてのインターフェースの各エージェントについて、1分あたり1つのトレースを無料で収集します。
カスタムサンプリングポリシー:ニーズに基づいてカスタムサンプリングポリシーを設定できます。各カスタムサンプリングポリシーでは、固定比率または固定トラフィックに基づいてトレースをサンプリングでき、すべてまたは特定のインターフェースに適用できます。
カスタムサンプリングポリシーを設定するには、次の手順を実行します。
ARMS consoleにログオンします。左側のナビゲーションペインで、 を選択します。
アプリケーションリストページで、上部のナビゲーションバーでリージョンを選択し、管理するアプリケーションの名前をクリックします。
説明言語列に表示されるアイコンは、アプリケーションが記述されている言語を示します。
:Javaアプリケーション
:Goアプリケーション
:Pythonアプリケーション
ハイフン(-):Managed Service for OpenTelemetryで監視されているアプリケーション。
- 左側のナビゲーションペインで、アプリケーション設定をクリックします。表示されるページで、カスタム設定タブをクリックします。
サンプリングレート設定セクションで、クライアントサンプリングポリシーを追加をクリックします。次のパラメータを設定し、OKをクリックします。
パラメータ
説明
サンプリングポリシー名
サンプリングポリシーの名前。
サンプリングタイプとサンプリング値
固定比率サンプリング: トレースは、指定された固定比率に基づいてサンプリングされます。このオプションを選択した後、サンプリング値フィールドに比率 (10% など) を入力する必要があります。
フロー制限: 指定された時間間隔内に指定された数のトレースがサンプリングされます。このオプションを選択した後、各エージェントによって収集されるトレースの数と時間間隔を設定する必要があります。たとえば、各エージェントは 1 秒ごとに 5 つのトレースを収集します。
適用可能なインターフェース
サンプリングポリシーが適用されるインターフェースの範囲。有効な値:各インターフェースまたはインターフェースを指定。インターフェースを指定を選択した場合は、インターフェース名を入力する必要があります。
説明インターフェースを指定を選択した場合、入力できるインターフェース名は1つだけです。複数のインターフェースを指定する場合は、各インターフェースのサンプリングポリシーを設定する必要があります。
例:
/elastic/updateインターフェースの場合、1分あたり20個のトレースがサンプリングされます。
すべてのインターフェースの場合、トラフィックの20%に基づいてトレースがサンプリングされます。
失敗または低速なリクエストのサンプリング
リクエストが次のいずれかの条件を満たす場合、関連するスパンがサンプリングされます。
リクエストでエラーが報告されています。シナリオ:
HTTPインターフェースに対して2xxまたは3xx以外のステータスコードが返されます。
サービス例外が原因でフレームワークにエラーがスローされ、LocalRootSpanによってキャッチされます。
リクエストの期間が、同じインターフェースの履歴リクエスト期間の99パーセンタイルよりも長くなっています。履歴リクエスト期間の99パーセンタイルは、バケット集計のためにずれている可能性があります。
リクエストのメソッドによって例外がスローされます。この条件は、ARMSエージェントV4.1.xでのみサポートされています。
サンプリングポリシーでは、トレース全体の整合性は保証されないことに注意してください。サンプリングがトリガーされると、アプリケーション内のスパンのみが保存されます。
使用上の注意
トラフィックが多い場合にトレース収集がビジネスに影響を与えないようにするために、ARMSはARMSエージェントが1秒あたりに収集するトレースの最大数を100に制限しています。この値は、固定レートサンプリングとアダプティブサンプリングの両方で有効になります。値を変更するには、カスタム設定タブで調整のしきい値パラメータを設定します。
大きい値を指定すると、システムリソースの消費量が増加します。デフォルト値を維持することをお勧めします。
参考資料
トレースをサンプリングした後、フィルター条件と集計ディメンションを設定して、トレースデータをリアルタイムで分析できます。詳細については、トレース分析を参照してください。