Splunk APMにおけるスパンとトレースの特殊事例 🔗
Splunk APMで遭遇する可能性のある、以下のスパンとトレースの特殊事例について説明します。
進行中のトレース 🔗
Splunk APMは、受信スパンをトレースにまとめ、それらを分析することで、アプリケーションデータに対する完全忠実なアクセスを提供します。
進行中のトレースとは 🔗
進行中のトレースは不完全なトレースです。進行中のトレース内のスパンは、まだ取り込みと整理が行われています。進行中のトレースがある場合、スパンが整理中であるからといって、トレース全体が完成するのを待って受信スパンを表示する必要はありません。
なぜトレースが進行中になる場合があるのか 🔗
処理パイプラインはスパンを処理し、トレースと関連付け、関連するメトリクスを保存します。処理パイプラインには時間がかかります。処理パイプラインに残っているスパンは、「ライブスパン」と見なされます。処理が完了し、スパンが最終ストレージに格納されると、スパンはライブスパンとは見なされなくなります。
トレースIDによって特定のトレースを要求すると、Splunkは、そのトレースIDを持つライブスパンがあるかどうかについて、処理パイプラインをチェックします。ライブスパンが見つかった場合、そのトレースは進行中であるとみなされます。ライブスパンが見つからず、最終ストレージにスパンがある場合、Splunkは、トレースが進行中かどうかを確認します。そのために以下の条件がチェックされます:
スパンの欠落
トレースの経過時間。そのトレース内のスパンの最新のタイムスタンプを調べることで判断します。
トレースのスパンが欠落しており、かつトレースに最近のタイムスタンプを持つスパンがある場合、そのトレースは進行中とみなされます。トレースのスパンが欠落しており、最新のタイムスタンプが古い場合、そのトレースは壊れているとみなされます。
進行中のトレースを見つける方法 🔗
注釈
Log Observerのライセンスを持っている場合、trace_id
フィールドがログに存在することを確認してください。このフィールドはAPMで進行中のトレースを見つけるのに役立ちます。
進行中のトレースを表示するには、以下の手順に従います:
- 関心のある進行中のトレースのトレースIDを特定します。Log Observerを使用している場合、以下の手順で進行中のトレースの
trace_id
を見つけます。使用していない場合は、トレースIDを収集する他のロギングシステムで、進行中のトレースのIDを見つけることができます。 Splunk Observability CloudのLog Observerに移動します。
ログ検索で、Add Filter を選択してフィルターダイアログボックスを開き、Fields を選択します。
フィールド検索バーで、トレースIDに関連するフィールド値の名前を入力します(
trace_id
など)。ログイベントフィールドをAPMのキー名にマッピングする方法の詳細については、「関連コンテンツの有効化」の「 Splunk Log Observer 」 セクションを参照してください。検索したフィールドを含むすべてのログを検索するには、値の検索バーに
*
と入力し、=
ボタンを選択してフィルターを適用します。これで、ログ検索には、検索したフィールドを含むすべてのログが表示されます。関心のあるトレースを含む最近のログを選択し、サイドバーで開きます。
トレースIDフィールドを見つけて、その値をコピーします。
(オプション)特定の
trace_ID
を含むすべてのログを表示するには、trace_ID
フィールドの値を選択し、リストから Add to filter を選択します。これで、ログ検索には、trace_ID
の値を含むすべてのログが表示されます。
- 関心のある進行中のトレースのトレースIDを特定します。Log Observerを使用している場合、以下の手順で進行中のトレースの
APMのランディングページの Traces タイルの検索バーに、コピーしたトレースIDを入力し、Go を選択します。そのトレースが存在する場合、トレースウォーターフォールビューが開きます。
進行中のトレースの「トレースウォーターフォール」ビューから、Refresh Trace ボタンを使用して、新しく取り込まれたスパンをリアルタイムで読み込みます。
注釈
進行中のトレースの表示中は、まだスパンの取り込みが行われています。一部のスパンには、親スパンが欠けている場合があります。詳しくは スパンの欠落があるトレース を参照してください。
推定スパン 🔗
推定スパンは、Splunk APMでインストルメントされていないサービスの操作を表すものですが、Splunk APMは、未インストルメントのサービスを呼び出すスパンの情報に基づいてこれを推定することができます。次のスクリーンショットは、「トレースウォーターフォール」ビューで推定スパンがグレーのボックスにイタリック体で表示されている様子を示しています。
推定サービスと推定スパンの詳細については、推定サービスのパフォーマンスを分析する を参照してください。
トレースの取り込み 🔗
トレースは、受信スパンの取り込みと整理にかかる時間に応じて、トラブルシューティングに利用できるようになるまでに数分かかることがあります。これにより、サービスマップ上でエラーソースや内訳などの独自のインサイトを提供することができます。
トラブルシューティングはリアルタイムのアラートから開始するため、アラートに到達して問題の調査を開始するまでには、関連するすべてのトレースは利用可能になっています。
ログや Jenkinsジョブのような他のデータソースから収集した特定のトレースIDを検索して、トレースが完了するのを待つことなく、トレースビューでそのトレースの受信スパンを見ることができます。
スパンの欠落があるトレース 🔗
「トレースウォーターフォール」ビューでオレンジ色の点が表示されているスパンは、親スパンが欠けていることを示しています。以下の画像は、親が見つからないスパンの横に表示されるオレンジの点を示すものです:
親スパンが見つからない理由は多くあります。以下はその例です:
トレースがまだ取り込み中であり、すべてのスパンが収集されていない場合。詳細は 進行中のトレース を参照してください。
インストルメンテーションが不完全なため、スパンがSplunk APMに送信されなかった場合。インストルメンテーションのトラブルシューティング を参照して、インストルメントしたアプリケーションについて考えられる問題を解決してください。