私は、Splunk Real User Monitoring (RUM)チームのプリンシパルエンジニアとして、SLA(サービスレベル契約)やSLO(サービスレベル目標)の測定と監視に従事しています。そのため、サービスを測定、可視化、およびトラブルシューティングするために、オブザーバビリティが欠かせません。SplunkのSLAでは、サービスの可用性を99.9%保証しています。Splunkのアプリケーションの複雑さも最新のアプリケーションと同様です。これらは、さまざまなマイクロサービスからのリクエストのオーケストレーションを行う共有のGraphQLサーバーに支えられたマイクロフロントエンドです。お客様のAppから毎分約8億5千万ものスパンが取り込みパイプラインに取り込まれ、下流工程でタイムリーに処理されて、UIアプリケーションを通じてお客様にインサイトが提供されます。優れたユーザーエクスペリエンスを提供できるかどうかは、これらがスムーズに実行できるかどうかにかかっています。SplunkがSLAとSLOを遵守するには、違反の発生時に速やかにアラートを受け取り、すぐに是正措置を講じられるようにする必要があります。
このブログでは、私たちのチームがSplunk Observability Cloudを使用して、本番環境で発生した重大インシデントをどのように検出して、わずかな時間で根本原因を分析したかについて紹介します。
インシデントが検出され、オンコールエンジニアは2つのソースからアラートを受け取りました。
1. GraphQLエラーを検出するRUMディテクターが、GraphQLリクエストの失敗数がしきい値を超えたことを知らせるアラートを生成しました。
RUM GraphQLエラーの数が指定のしきい値を超えたため、RUMディテクターによってアラートが生成された
2. Splunk Syntheticsに設定された、RUM UIを定期的にテストするリアルブラウザチェックが3回連続失敗した後に、アラートが生成されました。
リアルブラウザチェックが3回連続失敗し、Splunk Syntheticsからアラートを受け取った
アラートには、実際の問題がどのようなものであるかを理解するのに必要な、以下のような情報が含まれていました。
また、失敗したテストをSplunk Syntheticsで詳しく調査したことで、その実行のためにトリガーされたブラウザリクエストを可視化して確認することができました。これによって、その実行のすべてのGraphQLリクエストがレスポンスコード403で失敗したことが明らかになりました。
Splunk Syntheticsに表示された、失敗したブラウザリクエスト
次のステップは問題の規模を特定して、お客様向けのステータスページの情報を更新することでした。直ちにSplunk RUMのTag Spotlightに切り替えて、GraphQLエンドポイントでのエラー数の集計情報を簡単に表示することができました。これを行うために生データを調査したり複雑なクエリーを作成したりする必要はありませんでした。Tag Spotlightからは、環境、HTTPステータスコード、アプリケーションなどの複数のディメンションにわたるエラーの詳細な分析情報が提供されたため、他の本番環境は安定しており、問題が実際にus1環境固有のものであることが確認できました。
「us1」環境におけるGraphQL APIコールの403エラーが表示されている、Splunk RUMのTag Spotlight
差し迫った問題は、GraphQLサーバーに何が起こっているのかを突き止めることです。次のような疑問への答えを見つけ出す必要があります。
バックエンドサービスの全体像を掴むために、Splunk APMの依存関係マップを開いて、共有のGraphQLサーバーの上流から下流に至るすべてのサービスを確認しました。その結果、問題があるのは共有内部ゲートウェイサービスであり、GraphQLサーバーではないことがすぐに判明しました。
GraphQLサーバーの上流にある共有ゲートウェイサービスのエラーを示すSplunk APMの依存関係マップ
さらにSplunk APMには、403 Forbiddenのエラーを返していたゲートウェイの特定コンポーネントの情報を得るためのサンプルトレースが表示されました。このサンプルトレースが大いに役立ち、この問題を内部ゲートウェイサービスの担当チームにエスカレーションすることができたため、干し草の山から針を探すような作業をする必要はありませんでした。
403エラーに該当するトレースを表示しているSplunk APMのトレースビュー
私たちは内部ゲートウェイサービスの担当チームと協力して、まずは一時的な対策を優先的に講じることができました。対策を展開した後は、インシデントが完全に解決したかどうかをSplunk Observability Cloudで検証することもできました。
Splunk Syntheticsでは、修正の展開後にus1でのテストが成功したことが示されました。
修正の展開後にテストが成功したことを示すSplunk Synthetics
Splunk RUMのTag Spotlightページでは、/rumのすべてのGraphQLリクエストについて、HTTPステータスコード200のみがレポートされるようになりました。これで一安心です。
問題解決後、Splunk RUMのTag SpotlightではすべてのGraphQLリクエストについてHTTPステータスコード200が表示される
私たちエンジニアリングチームは、実際にお客様が使用する製品のオーナーであり、本番環境に新機能や機能強化を頻繁にデプロイしているため、Splunk Observability Cloudを使ってアプリケーションを監視するためのいくつかの方策を講じています。以下の方策への投資には大きな効果があり、SLAとSLOの達成に役立ちました。
オブザーバビリティへの取り組みに着手したことで非常に良かったのは、自分たちのアプリケーションの重要な側面に焦点を絞って小規模から開始し、本番環境の調査と監視を行う中で方法を学び、改善していくことができた点です。改善の努力を積み重ねていくことで、新たな価値がもたらされ、システムのアーキテクチャ、健全性、パフォーマンスについての包括的な理解を徐々に獲得しながら、その知識を共有することができました。
また、Splunk Observability Cloudのオブザーバビリティ機能により、インシデント事後レビューの精度を高めることもできました。これは、サイロ化した個々のソースからのイベントをつなぎ合わせるのではなく、記録されたシステムの動作をすべての関係者がリアルタイムで確認できるためです。このデータドリブンなガイダンスのおかげで、チームはインシデントの発生原因を理解し、将来のインシデントに対してより効果的な防止策と対応策を立てることができました。
データドリブンなチームを作り、パフォーマンスと生産性を最適化することに興味をお持ちでしたら、今すぐSplunk Observability Cloudを試してみることをお勧めします。
Splunkプラットフォームは、データを行動へとつなげる際に立ちはだかる障壁を取り除いて、オブザーバビリティチーム、IT運用チーム、セキュリティチームの能力を引き出し、組織のセキュリティ、レジリエンス(回復力)、イノベーションを強化します。
Splunkは、2003年に設立され、世界の21の地域で事業を展開し、7,500人以上の従業員が働くグローバル企業です。取得した特許数は1,020を超え、あらゆる環境間でデータを共有できるオープンで拡張性の高いプラットフォームを提供しています。Splunkプラットフォームを使用すれば、組織内のすべてのサービス間通信やビジネスプロセスをエンドツーエンドで可視化し、コンテキストに基づいて状況を把握できます。Splunkなら、強力なデータ基盤の構築が可能です。