Splunk APM

20 minutes  
ペルソナ

あなたはバックエンド開発者で、SRE が発見した問題の調査を手伝うよう依頼されました。SRE はユーザーエクスペリエンスの低下を特定し、あなたにその問題を調査するよう依頼しました。

RUM トレース(フロントエンド)から APM トレース(バックエンド)にジャンプすることで、完全なエンドツーエンドの可視性の力を発見します。すべてのサービスはテレメトリ(トレースとスパン)を送信しており、Splunk Observability Cloud はこれを視覚化、分析し、異常やエラーを検出するために使用できます。

RUM と APM は同じコインの表と裏です。RUM はアプリケーションのクライアント側からの視点であり、APM はサーバー側からの視点です。このセクションでは、APM を使用して掘り下げ、問題がどこにあるかを特定します。

Last Modified 2025/04/30

6. Splunk APMのサブセクション

1. APM探索

APM サービスマップは、APM で計装された(インストルメンテーション)サービスと推測されるサービスの間の依存関係と接続を表示します。このマップは、時間範囲、環境、ワークフロー、サービス、タグフィルターでの選択に基づいて動的に生成されます。

RUM ウォーターフォールで APM リンクをクリックすると、そのワークフロー名(frontend:/cart/checkout)に関連するサービスを表示するために、サービスマップビューに自動的にフィルターが追加されました。

ワークフローに関連するサービスはService Mapで確認できます。サイドペインのBusiness Workflowの下には、選択したワークフローのチャートが表示されています。Service Mapとビジネスワークフローチャートは同期しています。Service Mapでサービスを選択すると、Business Workflowペインのチャートが更新され、選択したサービスのメトリクスが表示されます。

演習
  • サービスマップでpaymentserviceをクリックします。

APM探索 APM探索

Splunk APM はまた、リアルタイムで発生している問題を確認し、問題がサービス、特定のエンドポイント、または基盤となるインフラストラクチャに関連しているかどうかを迅速に判断するのに役立つ組み込みの Service Centric View(サービス中心ビュー) も提供しています。より詳しく見てみましょう。

演習
  • 右側のペインで、青色のpaymentserviceをクリックします。

APMサービス APMサービス

Last Modified 2025/05/02

2. APMサービスビュー

サービスビュー

サービスオーナーとして、Splunk APM のサービスビューを使用して、単一のパネルでサービスの健全性の完全なビューを取得できます。サービスビューには、可用性、依存関係、リクエスト、エラー、および期間(RED)メトリクス、ランタイムメトリクス、インフラストラクチャメトリクス、Tag Spotlight、エンドポイント、および選択したサービスのログのためのサービスレベルインジケーター(SLI)が含まれています。また、サービスビューからサービスのコードプロファイリングとメモリプロファイリングにすぐにアクセスすることもできます。

サービスダッシュボード サービスダッシュボード

演習
  • 時間ボックスを確認すると、ダッシュボードは以前に選択した APM トレースが完了するまでにかかった時間に関連するデータのみを表示していることがわかります(チャートは静的であることに注意してください)。
  • 時間ボックスで時間枠を -1h に変更します。
  • これらのチャートはパフォーマンスの問題を素早く特定するのに非常に役立ちます。このダッシュボードを使用して、サービスの健全性を監視できます。
  • ページを下にスクロールしてInfrustructure Metricsを展開します。ここでホストと Pod のメトリクスが表示されます。
  • Runtime Metricsは、Node.js で書かれたサービスにはプロファイリングデータが利用できないため、使用できません。
  • では、探索ビューに戻りましょう。ブラウザの戻るボタンを押してください。

APM探索 APM探索

演習

サービスマップでpaymentserviceの上にカーソルを置いてください。ポップアップサービスチャートからどのような結論を導き出せますか?

エラーの割合が非常に高い。

APMサービスチャート APMサービスチャート

このエラー率にパターンがあるかどうかを理解する必要があります。そのための便利なツール、Tag Spotlightがあります。

Last Modified 2025/05/02

3. APM Tag Spotlight

演習
  • paymentserviceのタグを表示するには、paymentserviceをクリックし、右側の機能ペインのTag Spotlightをクリックします(画面の解像度によっては下にスクロールする必要があるかもしれません)。
  • Tag Spotlightに入ったら、フィルターアイコンからShow tags with no valuesチェックボックスがオフになっていることを確認してください。

APM Tag Spotlight APM Tag Spotlight

Tag Spotlightのビューは、チャートとカードの両方で設定可能です。デフォルトではリクエストとエラーに設定されています。

また、カードに表示されるタグメトリクスを設定することも可能です。以下の任意の組み合わせを選択できます:

  • Requests
  • Errors
  • Root Cause errors
  • P50 Latency
  • P90 Latency
  • P99 Latency

改めて、フィルターアイコンからShow tags with no valuesチェックボックスがオフになっていることを確認してください。

演習

どのカードが問題を特定するタグを明らかにしていますか?

「Version」カードです。v350.10に対するリクエスト数がエラー数と一致しています(つまり 100%)

paymentserviceの問題を引き起こしているバージョンを特定したので、エラーについてさらに詳しい情報が見つかるか確認してみましょう。ページ上部の ← Tag Spotlight をクリックして、サービスマップに戻ります。

Last Modified 2025/05/02

4. APMサービスブレイクダウン

演習
  • サービスマップでpaymentserviceを選択します。
  • 右側のペインでBreakdownをクリックします。
  • リストからtenant.levelを選択します。
  • サービスマップに戻り、goldをクリックします。
  • Breakdownをクリックしてversionを選択します。これはサービスバージョンを表示するタグです。
  • これをsilverbronzeについても繰り返します。

表示されている内容からどのような結論が導き出せますか?

すべてのtenant.levelv350.10の影響を受けています

これでpaymentservicegoldsilverbronzeの 3 つのサービスに分解されているのが確認できます。各テナントは 2 つのサービスに分解されており、それぞれのバージョン(v350.10v350.9)に対応しています。

APMサービスブレイクダウン APMサービスブレイクダウン

スパンタグ

スパンタグを使用してサービスを分解することは非常に強力な機能です。これにより、異なる顧客、異なるバージョン、異なる地域などに対して、サービスがどのようにパフォーマンスを発揮しているかを確認できます。この演習では、paymentservicev350.10がすべての顧客に問題を引き起こしていることを特定しました。

次に、何が起きているかを確認するためにトレースを詳しく調べる必要があります。

Last Modified 2025/05/02

5. APMトレースアナライザー

Splunk APM はすべてのサービスのNoSample(サンプリングなし)エンドツーエンドの可視性を提供するため、Splunk APM はすべてのトレースをキャプチャします。このワークショップでは、Order Confirmation IDがタグとして利用可能です。これは、ワークショップの前半で遭遇した不良なユーザー体験の正確なトレースを検索するためにこれを使用できることを意味します。

トレースアナライザー

Splunk Observability Cloud は、アプリケーション監視データを探索するためのいくつかのツールを提供しています。Trace Analyzerは、未知または新しい問題を調査するための高カーディナリティ、高粒度の検索と探索が必要なシナリオに適しています。

演習
  • paymentserviceの外側のボックスを選択した状態で、右側のペインでTraceをクリックします。
  • Trace Analyzerを使用していることを確認するため、ク Switch to Classic Viewボタンが表示されていることを確認します。表示されていない場合は、Switch to Trace Analyzerをクリックします。
  • 時間範囲過去 15 分に設定します。
  • Sample Ratio1:10ではなく1:1に設定されていることを確認します。

APMトレースアナライザー APMトレースアナライザー

Trace & Error countビューは、積み上げ棒グラフで合計トレース数とエラーのあるトレース数を表示します。マウスを使用して、利用可能な時間枠内の特定の期間を選択できます。

演習
  • Trace & Error countと表示されているドロップダウンメニューをクリックし、Trace Durationに変更します

APMトレースアナライザーヒートマップ APMトレースアナライザーヒートマップ

Trace Durationビューは、期間ごとのトレースのヒートマップを表示します。ヒートマップは 3 次元のデータを表しています:

  • x 軸の時間
  • y 軸のトレース期間
  • ヒートマップの色合いで表される 1 秒あたりのトレース(またはリクエスト)数

マウスを使ってヒートマップ上の領域を選択し、特定の時間帯とトレース期間の範囲にフォーカスすることができます。

演習
  • Trace DurationからTrace & Error countに戻します。
  • 時間選択で過去 1 時間を選択します。
  • ほとんどのトレースにエラー(赤)があり、エラーのないトレース(青)は限られていることに注意してください。
  • Sample Ratio1:10ではなく1:1に設定されていることを確認します。
  • Add filtersをクリックし、orderIdと入力してリストからorderIdを選択します。
  • ワークショップの前半でショッピングを行った際のOrder Confirmation IDを貼り付けて Enter キーを押します。もし ID を記録していない場合は、インストラクターに確認してください。 期間別トレース 期間別トレース

これで、非常に長いチェックアウト待ちという不良なユーザーエクスペリエンスに遭遇した正確なトレースまでフィルタリングできました。

このトレースを表示することの二次的な利点は、トレースが最大 13 か月間アクセス可能であることです。これにより、開発者は後の段階でこの問題に戻り、このトレースを引き続き表示することができます。

演習
  • リスト内のトレースをクリックします。

次に、トレースウォーターフォールを確認していきます。

Last Modified 2025/05/02

6. APMウォーターフォール

トレースアナライザーからトレースウォーターフォールに到達しました。トレースは同じトレース ID を共有するスパンの集まりで、アプリケーションとその構成サービスによって処理される一意のトランザクションを表します。

Splunk APM の各スパンは、単一の操作をキャプチャします。Splunk APM は、スパンがキャプチャする操作がエラーになった場合、そのスパンをエラースパンとみなします。

トレースウォーターフォール トレースウォーターフォール

演習
  • ウォーターフォール内の任意のpaymentservice:grpc.hipstershop.PaymentService/Chargeスパンの横にある!をクリックします。

スパン詳細で報告されているエラーメッセージとバージョンは何ですか?

Invalid request(無効なリクエスト)とv350.10です

問題を引き起こしているpaymentserviceのバージョンを特定したので、エラーについてさらに詳しい情報が見つかるか確認してみましょう。ここで関連ログの出番です。

関連コンテンツ(Related Contents)は、APM、インフラストラクチャモニタリング、および Log Observer が可観測性クラウド全体でフィルターを渡すことを可能にする特定のメタデータに依存しています。関連ログが機能するためには、ログに以下のメタデータが必要です:

  • service.name
  • deployment.environment
  • host.name
  • trace_id
  • span_id
演習
  • トレースウォーターフォールの一番下でLogs (1)をクリックします。これは、このトレースに関連ログがあることを示しています。
  • ポップアップのLogs for trace xxx(トレース xxx のログ)エントリをクリックすると、Log Observerで完全なトレースのログが開きます。

関連ログ 関連ログ

次に、ログのエラーについてさらに詳しく調べてみましょう。