複雑なビジネスロジックを持つ分散システムでは、大量のビジネスデータの中から失敗、タイムアウト、異常なトレースを特定することは困難でコストがかかる可能性があります。Application Real-Time Monitoring Service (ARMS) は、ビジネスニーズに合った特定のトレースを収集するのに役立つ、さまざまなトレースサンプリングポリシーを提供します。これにより、リソースの使用量を最小限に抑えながら、アプリケーションを効率的に監視できます。
分散トレーシングにおける一般的なサンプリングポリシー
分散トレーシングでは、サンプリングの決定が行われるタイミングに基づいて、3つのサンプリングポリシーが利用可能です。
ヘッドベースサンプリング: サンプリングの決定は、ゲートウェイサービス、プロキシサービス、コアアップストリームサービスなどのイングレスサービスのルートスパンで行われます。イングレスサービスのルートスパンがサンプリングされると、後続のサービスのトレースデータもサンプリングされます。これにより、トレース全体の整合性が確保されます。
テールベースサンプリング: サンプリングの決定は、すべてのトレースが利用可能になった後にサーバーで行われます。トレースをサンプリングする必要がある場合、そのデータは保存されます。そうでない場合は、データは破棄されます。これにより、データの整合性が確保されます。テールベースサンプリングは、いつでもトラブルシューティングと診断のために、失敗、低速、または異常なトレースを正確にサンプリングします。ただし、トレースのオーバーヘッドとデータコストも増加します。
単項サンプリング: 単項サンプリングは、非コヒーレントサンプリングポリシーです。トレースの場合、各スパンが属するサービスによって、データをサンプリングして報告するかどうかが決定されます。各サービスがトレースサンプリングを決定するため、報告されるトレースデータは完全ではありません。
ARMS が提供するサンプリングポリシー
ARMS は通常、報告される可観測性データに関連するコストを最小限に抑えるために、ヘッドベースサンプリングを採用しています。可観測性データの課金については、課金 を参照してください。
固定レートサンプリング: トレースは、イングレスサービスで指定されたサンプリングレートに基づいてサンプリングされます。たとえば、固定レートが 10% の場合、10 個のトレースデータごとに 1 つが記録されます。
適応サンプリング: 最もリクエストの多い 1,000 件の API 操作ごとに、LFU (Least Frequently Used) アルゴリズムに基づいて 1 分あたり 10 個のトレースがサンプリングされますが、他のすべての API 操作は 1 分あたり 10 個のトレースのクォータを共有します。これは、ARMS によって開発された費用対効果の高いヘッドベースサンプリングポリシーです。
シナリオ別にサンプリングポリシーを選択する
各サンプリングポリシーには、それぞれ長所と短所があります。以下のセクションは、さまざまなシナリオでパフォーマンスとコストのバランスを取るのに役立ちます。
ARMS では、さまざまなシナリオでのビジネス要件を満たすために、1 つのアプリケーションのトレースサンプリング設定を別のアプリケーションにバッチでコピーできます。詳細については、アプリケーション設定を他のアプリケーションに同期する を参照してください。
コスト管理: 固定レートサンプリング
一般に、アプリケーションの固定サンプリングレートを低く設定できます。たとえば、デフォルトのレート 10% を 5% に変更します。
トレースサンプリングのコストは半分に削減されますが、オンライン本番環境に不可欠なサンプリングされたトレースデータは同じ量だけ減少するわけではありません。これは、特にリクエストの多いアプリケーションでは、固定レートでほとんどの通常かつ一般的に重複するトレースから例外をキャプチャできるためです。アプリケーションのトレースで発生する例外は、例外が一時的なスパイクでない限り、アプリケーションの他のトレースでも発生する可能性があります。このように、低い固定サンプリングレートは、コストのプレッシャーを軽減しながら、トレース監視の基本的なパフォーマンスを依然として保証します。
次の図は、固定レートサンプリングの設定を示しています。サンプリングレートの設定方法については、固定レートサンプリング を参照してください。
コアビジネス: 固定レートサンプリングと操作固有の完全収集
ワークフロー内の特定のビジネスロジックを優先するには、コアアプリケーションの固定サンプリングレートを高く設定できます。一方、特定のコア操作の完全収集を有効にして、それらから送信されたリクエストのすべてのトレースをサンプリングできます。
たとえば、e コマースシステムでは、ユーザー情報のクエリや編集ではなく、製品のクエリや購入などの操作に焦点を当てることが不可欠です。これにより、トレースの例外を迅速に特定して解決し、サービスの中断を防ぐことができます。この場合、アプリケーションのサンプリングレートをデフォルトの 10% より高くし、必要な特定のコア操作の完全収集を有効にすることをお勧めします。
完全収集により、収集されたデータが急増する可能性があります。完全収集は、主要な操作に対して、または必要な場合にのみ有効にしてください。
次の図は、特定の操作、または特定のプレフィックスまたはサフィックスを持つ操作のすべてのトレースデータを収集するための設定を示しています。完全収集の設定方法については、固定レートサンプリング を参照してください。
主要な O&M イベント: 固定レートサンプリング
大規模なプロモーションや新規リリースのパフォーマンステストなどの主要な O&M イベント中は、特定のタグを持つデータ、またはすべてのアプリケーションに対して固定 100% サンプリングレートを設定できます。タグによるアプリケーションのフィルタリング方法については、タグの管理 を参照してください。これにより、トラブルシューティング、監査、アカウンタビリティが容易になります。
主要なイベントの後、パフォーマンスの低下と不要なコストを防ぐために、サンプリングレートを下げることをお勧めします。
トラフィックの変動: 適応サンプリング
複雑なビジネスロジックの変化に伴ってトラフィックが変動するシナリオでは、アプリケーションに適応サンプリングポリシーを設定できます。
複雑なビジネスロジックを持つアプリケーションには、多くの操作が伴うことがよくあります。適応サンプリングポリシーは、LFU アルゴリズムに基づいて特定のエントリのみをサンプリングすることで、収集されるデータが操作トラフィックとともに直線的に増加しないようにします。さらに、すべての操作に組み込まれている最小サンプリングポリシーは補足として機能し、トラフィックレベルに関係なく、各操作の貴重なトレースデータが記録されることを保証します。
すべての API 操作の最小サンプリング: 各 API 操作のトレースは 1 分以内に自動的にサンプリングされます。デフォルトでは、ARMS はこのサンプリングポリシーを有効にします。
対照的に:
アプリケーションに固定サンプリングレートを設定すると、リクエストの多い操作は過剰にサンプリングされますが、トラフィックが少ないか、またはゼロコールのためにサンプリングされない操作 (スケジューリングなど) は、例外が発生した場合にトレーシング結果に影響を与える可能性があります。
特定の操作の完全収集を手動で個別に有効にすると、O&M ワークロードが大きくなり、見落としが発生する可能性があります。
それでも、アプリケーションのパフォーマンスにとって重要な特定の操作の完全収集を設定することはできます。
次の図は、適応サンプリングの設定を示しています。設定方法については、適応サンプリング を参照してください。
関連手順
トレースがサンプリングされた後、フィルター条件と集約ディメンションを設定して、トレースデータをリアルタイムで分析できます。詳細については、トレース分析 を参照してください。