Docs » Splunk Observability Cloudのシナリオ » Splunk Observability Cloudのグローバルシナリオ » シナリオ:KaiがSplunk Observability Cloudを使用してブラウザからバックエンドまでの問題をトラブルシューティングする

シナリオ:KaiがSplunk Observability Cloudを使用してブラウザからバックエンドまでの問題をトラブルシューティングする 🔗

架空の企業、Buttercup Gamesは、自社製品を販売するためのECサイトを運営しています。彼らは最近、マイクロサービスアーキテクチャとKubernetesをインフラに採用したクラウドネイティブなアプローチを使用するように、サイトを再設計しました。

Buttercup Gamesのサイト信頼性エンジニア(SRE)とサービスオーナーは、人々がサイトを訪問した際に素晴らしいエクスペリエンスを提供できるよう、協力してサイトの監視とメンテナンスを行っています。彼らがクラウドネイティブのアプローチを取ることを決めた多くの理由のうちの1つは、オブザーバビリティを促進できるからです。彼らは、オブザーバビリティのソリューションとして、Splunk Observability Cloudを選択しました。

このシナリオでは、SREのKaiとサービスオーナーのDeepuがSplunk Observability Cloudを使用して以下のタスクを実行し、Buttercup Gamesのサイトで最近発生したインシデントのトラブルシューティングと根本原因の特定を行った方法について説明します:

  1. Receive alerts about outlier behavior
  2. Assess user impact using Splunk Real User Monitoring (RUM)
  3. Investigate the root cause of a business workflow error using Splunk Application Performance Monitoring (APM)
  4. Check on infrastructure health in Splunk Infrasctructure Monitoring
  5. Look for patterns in application errors in Splunk APM
  6. Examine error logs for meaningful messages and patterns using Splunk Log Observer Connect
  7. Monitor a fix using Splunk Log Observer Connect
  8. Take preventative action and create metrics from logs to power dashboards and alerts

このシナリオの動画版は、Splunk Observability Cloudのデモ をご覧ください。

Receive alerts about outlier behavior

  1. オンコール対応のSREであるKaiは、Buttercup Gamesサイトでの購入数が過去1時間において大幅に減少し、精算の完了率が極めて低いことを示すアラートを受け取りました。Kaiは、自分のチームがSplunk Observability Cloudで設定したアラートルールが、静的閾値を使用するのではなく動的なベースラインとして時間と曜日を考慮に入れていることから、これらのアラートが本当に異常な挙動を示すものであることを信用しています。

  2. KaiはラップトップでSplunk Observability Cloudにログインして調査します。

Assess user impact

Kaiが受信したアラートについてまず知りたいのは:ユーザーへの影響

  1. KaiはSplunk Real User Monitoring(RUM)を開いて、サイト上のブラウザベースのパフォーマンスを基に、問題の手がかりを探します。購入数の減少と精算の完了率の低さに関連している可能性のある、以下の2つの問題に気が付きました:

  • フロントエンドのエラーの急増

    このスクリーンショットは、Splunk Real User MonitoringのFE(フロントエンドの)エラーのモジュールを示しています。このモジュールは過去15分間のエラー率を示しており、エラー率は74件/秒です。
  • バックエンドのエンドポイントの高レイテンシ

    このスクリーンショットは、Splunk Real User Monitoringのエンドポイントのレイテンシのモジュールを示しています。このモジュールは、「/cart/checkout」エンドポイントのレイテンシが8秒であることを示しています。
  1. Kaiは、この2つの問題には関連があるのか、また、これらがサイトの問題の原因であるかどうかについて、確信が持てません。「 /cart/checkout 」のエンドポイントのレイテンシが高いことについて調査することにしました。「 cart/checkout 」のページ読み込み時間と最大コンテンツの描画も高くなっているためです。

  2. Kaiは「 /cart/checkout 」エンドポイントのリンクを選択し、Splunk RUMのTag Spotlightビューで複数のエラーを確認します。エラーは特定のどのタグにも関連していないようなので、「 ユーザーセッション 」タブを選択してユーザーセッションを調べます。

  3. Kaiは、他のセッションよりも時間がかかっているように見えるセッションを1つ見つけました。フロントエンドからバックエンドまでの完全なトレースを見るためにそのセッションを選択すると、このセッションに通常よりも長い時間がかかっていることが分かりました。このデータ例に基づいて、Kaiは、このレイテンシはフロントエンドの問題ではなく、バックエンドまでトレースをたどる必要があることを理解しました。

  4. Kaiは APM のリンクを選択して、パフォーマンスサマリーとこのセッションのトレースおよびワークフローの詳細にアクセスします。

Kaiは、エンドツーエンドのトランザクションのワークフローを見てみることにしました。

Investigate the root cause of a business workflow error

  1. Splunk RUMで、Kaiは frontend:/cart/checkout のビジネスワークフローのリンクを選択し、Splunk Application Performance Monitoring(APM)でそのサービスマップを表示します。ビジネスワークフローとは、システム内のエンドツーエンドのトランザクションを反映するトレースのグループのような、論理的に関連付けられたトレースのグループです。

    このサービスマップを見て、Kaiは、あるサービスから別のサービスへのエラーの伝搬を含め、トラブルシューティング対象の「 /cart/checkout 」のアクションを支えるサービスの全一式における依存関係の相互作用を理解します。

    特に、paymentservice に問題があることが分かります。Splunk APMはこの問題を根本原因エラーとして特定しました。つまり、paymentservice では、ワークフローのエクスペリエンス低下の原因となっているダウンストリームエラーの数が最も多いということです。

    このスクリーンショットは、Splunk APMのサービスマップを示すもので、ルートエラーの発生源としてpaymentserviceが表示されています。
  2. Kaiは、paymentservice を選択します。サービスのエラーとレイテンシの詳細が表示されるだけでなく、Splunk Observability Cloudによって、アプリケーションの他領域にある関連データへのアクセスを提供する「関連コンテンツ」のタイルも表示されます。

    例えば、Kaiは、paymentservice を実行するKubernetesクラスターの健全性を調べたり、paymentservice によって発行されるログを調べたりすることができます。

    このスクリーンショットはSplunk APMのサービスマップを示すもので、2つの「関連コンテンツ」タイル(paymentserviceのK8sクラスターとpaymentserviceのログ)へのアクセスが提示されています。

KaiはKubernetesクラスターを調べて、このエラーがインフラストラクチャの問題に基づいているものかどうかを確認することにしました。

Check on infrastructure health

  1. Kaiは、Splunk APMで「 paymentserviceのK8sクラスター 」の「関連コンテンツ」タイルを選択し、Splunk Infrastructure MonitoringのKubernetesのナビゲーターを表示します。ここでは、Splunk APMで表示していたコンテキストを保持するため、自動的にビューが「 paymentservice 」に絞り込まれています。

  2. クラスターマップの「 paymentservice 」ポッドを選択して、データを深く掘り下げます。

    このスクリーンショットは、Splunk Infrastructure Monitoringの「Kubernetes」のポッドメニューを示すもので、ポッド名やステータスなど、ポッドに関する詳細が表示されています。

    Kaiは、このポッドがエラーもイベントもなく安定していることを確認します。

  1. 問題の原因としてKubernetesインフラストラクチャを除外できたので、Splunk APMでの調査に戻ることにしました。Splunk Infrastructure Monitoringの現在のビューで、マップ内のpaymentservice の「関連コンテンツ」タイルを選択します。

Look for patterns in application errors

  1. Splunk APMで、Kaiは Tag Spotlight` を選択し、調査中のエラーのタグ値の相関関係を調べます。

    例えば、Kaiが tenant.level モジュールを見ると、すべてのレベルでエラーが発生していることが分かります。このため、根本原因はテナント固有のものではない可能性が高いです。

    このスクリーンショットは、Splunk APMの「tenant.level」モジュールを示すもので、ゴールド、シルバー、ブロンズのテナントレベルにエラーが均等に分散していることを示しています。

    しかし、Kaiが バージョンモジュール を見ると、興味深いパターンが確認できました。エラーはバージョン v350.10 でのみ発生しており、下位の v350.9 バージョンでは発生していません。

  2. これは有力な手がかりのようなので、Kaiはログの詳細を調べることにしました。paymentserviceのログ の「関連コンテンツ」タイルを選択します。

Examine error logs for meaningful messages and patterns

さて、Splunk Log Observer ConnectではKaiのビューが自動的に絞り込まれ、「 paymentservice 」について受信したログデータのみが表示されています。

  1. いくつかのエラーログを見て、1つのログを選択し、構造化されたビューで詳細を確認します。ログの詳細を見ると、次のエラーメッセージが表示されています:「ButtercupPaymentsで決済処理が失敗:無効なAPIトークン(test-20e26e90-356b-432e-a2c6-956fc03f5609)」。

  2. エラーメッセージの中に、Kaiはエラーの明確な兆候と思われるものを見つけました。APIトークンが「test」で始まっています。あるチームが、本番環境では動作しないテストトークンを使ってv350.10をライブ環境にプッシュしたと考えられます。

    この仮説をチェックするために、Kaiはこのエラーメッセージを選択し、このエラーメッセージを含むログのみを表示するため、フィルターに追加 を選択します。

  3. 次に、「 グループ化の方法 」を「 重大度 」から「 バージョン 」に変更します。

    これでKaiは、このテストAPIトークンのエラーを含むログのすべてがバージョン v350.10 のものであり、バージョンv350.9のものは1つもないことを確認しました。

    このスクリーンショットはLog Observer Connectのページを示すもので、イベントがエラーメッセージでフィルタリングされ、バージョン350.10でグループ化されています。表示されているログはすべてエラーログです。
  4. 確認のため、Kaiは、このフィルターを一時的に除外するために、このメッセージフィルター値の目型のアイコンを選択します。これでバージョンv350.9のログも表示されましたが、それらのログにはエラーメッセージは含まれていません。

この調査により、Kaiはv350.10のテストAPIトークンが問題の原因である可能性が最も高いと確信しました。Kaiは、paymentservice のオーナーであるDeepuに、この調査結果を通知します。

Monitor a fix

Kaiの調査結果に基づいて、paymentservice のオーナーであるDeepuがSplunk Log Observer Connectでエラーログを確認します。そして、テストAPIトークンが問題の原因である可能性が高いというKaiの評価に同意しました。

  1. Deepuは、Buttercup Gamesのサイトを既知の正常な状態に戻すことを試みるために、バージョンをv350.9に戻して暫定的な修正を実施し、その間にチームでv350.10への修正に取り組むことを決定しました。

  2. バージョンv350.9に戻すことで問題が解決するかどうかを確認するための1つの方法として、DeepuはSplunk Log Observer Connectの左上隅にあるタイムピッカーを開き、Live Tail を選択します。Live Tailは、受信ログのサンプルのリアルタイムストリーミングビューを提供します。

  1. DeepuがLive Tailビューを見ると、確かに paymentservice のログに、決済の失敗を示すメッセージが現れなくなりました。Buttercup Gamesのサイトが安定した状態に戻ったことを確認して、Deepuは、チームによるv350.10の修正作業のサポートを開始します。

Take preventative action and create metrics from logs to power dashboards and alerts

Kaiは、この特定の問題がButtercup Gamesサイトでの問題を引き起こす可能性があると分かったため、SREチームのための予防的な作業を行うことにしました。KaiはSplunk Log Observer Connectで作成したクエリを選んで、メトリクスとして保存します。

このスクリーンショットは、Log Observer Connectの「その他の操作」メニューの「メトリクスとして保存」オプションを示しています。

これにより、集計カウントを示すログ由来のメトリクスを作成するログのメトリクス化ルールが定義されます。Kaiのチームは、このログ由来のメトリクスをチャート、ダッシュボード、アラートに埋め込むことができます。これで、将来この問題が再び発生した場合に、問題をより早く特定するのに役立ちます。

Summary

Kaiは、Buttercup Gamesのウェブサイトでユーザーの購入完了を妨げていたフロントエンドの問題に対応し、解決することができました。RUMを使用してエラーのトラブルシューティングを開始し、考えられる原因としてフロントエンドのエラーの急増とバックエンドのレイテンシを特定しました。/cart/checkout のエンドポイントを掘り下げ、RUMのTag Spotlightビューを使用して完全なトレースを調査しました。これに基づいて、レイテンシがフロントエンドの問題ではないことが分かりました。次に、APMでパフォーマンスサマリーとエンドツーエンドのトランザクションワークフローを確認しました。サービスマップを見ると、Splunk APMが paymentservice をエラーの根本原因として特定したことに気が付きました。Kubernetesによる問題の可能性を排除した後、Tag Spotlightを使ってエラーのタグ値の相関関係を探しました。エラーが特定のバージョンでのみ発生していることに気づき、ログの詳細を調べることにしました。Log Observer Connectを使用し、ログの詳細を見て、APIトークンのエラーメッセージが「test」で始まっていることに気が付きました。

paymentservice のオーナーであるDeepuと相談し、テストAPIトークンが問題の原因である可能性が高いということで合意しました。Deepは修正を実施した後、Log Observer ConnectのLive Tailレポートを使用して、受信ログのリアルタイムストリーミングビューを監視しました。そして、決済のエラーが発生しなくなったことを確認しました。最終手順として、KaiはSplunk Log Observer Connectのクエリをメトリクスとして保存することで、チームにアラートを通知し、今後同様の問題を迅速に解決できるようにしました。

Learn more

このページは 2024年12月02日 に最終更新されました。