テレメトリーシグナルの相関に基づくデバッグにより、オブザーバビリティの真価を発揮
CloudNative Days Summer 2024では、グーグル・クラウド・ジャパン合同会社の山口 能迪氏が「テレメトリーシグナルの相関、してますか? 第一原理からのデバッグを支える計装」と題してセッションを行った。第一原理に基づくデバッグの重要性と、それを支えるテレメトリーシグナルの相関について詳細に解説した。セッションは、理論と実践の両面からオブザーバビリティを支える計装技術の全体像を明らかにする内容となった。
第一原理に基づくデバッグとその重要性
山口氏はセッションの冒頭で、第一原理に基づくデバッグの概念を紹介した。第一原理とは、ギリシャの哲学者アリストテレスが提唱した物事の根本的な性質を指すものである。システムデバッグにおいては推測を排除し、確固たるデータに基づいて根本原因を究明する方法を意味する。「推測だらけのデバッグ」と「推測なしに演繹するデバッグ」の違いを具体例を交えて説明した。「例えば、APIエンドポイントのレイテンシが高くなった場合、熟練のエンジニアは経験に基づいて推測することが多いです。しかしデータを基にした第一原理に基づくデバッグでは推測を排除し、データから根本原因を直接導き出します」と山口氏は述べた。
山口氏は、推測に依存しないデバッグがいかにシステムの健全性を保つ上で重要であるかを強調した。各事象を表すテレメトリー同士が連携し、第一原理からのデバッグが実践されることで、熟練だけでなく、比較的経験の少ないエンジニアでも効率的に問題を解決できるようになると指摘した。
先ほども挙げた具体例の、APIエンドポイントのレイテンシが高くなり、インスタンスのメモリ使用率が上昇したという状況では、熟練のエンジニアならば、これらのデータから過去の経験を基に推測を行い、DBの接続負荷が原因と考えられるかもしれない。しかし第一原理に基づくデバッグでは、テレメトリーシグナルを用いて直接的に根本原因を特定することが求められる。このようなアプローチにより、システムのトラブルシューティングがより信頼性の高いものとなるというわけだ。
各テレメトリーシグナルの性質を理解して適切に連携
次に山口氏はテレメトリーシグナルをログ、トレース、メトリクス、プロファイルの4種類に分類し、それぞれの性質と相関の方法を説明した。ログは特定の事象を記録し、トレースは関連する複数の事象の期間を記録する。メトリクスは一定期間内の統計データを提供し、プロファイルはスタックトレースの統計データを提供する。
「各テレメトリーシグナルはそれぞれ異なる性質を持ちますが、これらをうまく相関させることでシステムの異常を効率的に特定できます」と山口氏は語った。
ログはイベントごとのデータを記録し、時間的な変化を捉えるのに適している。トレースはサービス間の呼び出し関係を記録し、マイクロサービス環境でのパフォーマンス問題の特定に有用である。メトリクスはCPU使用率やメモリ使用率などのリソース利用状況を統計的に捉え、そしてプロファイルはアプリケーションの各関数のリソース使用状況を詳細に分析する。
これらのテレメトリーシグナルの性質を理解して、適切に連携させることで、システムの異常を迅速かつ正確に特定できるようになる。例えば、APIエンドポイントのレイテンシが高くなった場合なら、その原因をトレースやメトリクスのデータと関連付けることで原因の特定に至るというわけだ。
テレメトリーシグナル相関の例
山口氏は、具体的な相関例を挙げて説明した。ログとトレースの相関、トレースとメトリクスの相関、そしてログとメトリクスの相関について、実際のコードや図を用いて解説した。具体例として、構造化ログを使用してトレース情報をログに埋め込む方法や、ヒストグラムにトレース情報を組み込む方法を挙げていた。
「例えば、traceIDをログに埋め込むことで、トレースとログの相関が容易になります」と山口氏は説明した。
具体例として、Google Cloudのサービスを用いたトレースとメトリクスの相関方法を紹介した。OpenTelemetryのライブラリを使用し、traceIDやspanIDをメトリクスに埋め込むことで、効率的にデータを関連付ける方法を示した。また構造化ログを活用してトレース情報をログに埋め込むことで、ログとトレースの相関も容易にする手法を解説した。
これにより、システムの異常を迅速に特定し、適切な対策を講じることが可能になるという。またログとメトリクスの相関についても、ログのフィルターを用いてメトリクスを生成する方法を紹介し、相関の具体的な手法を詳述した。
テレメトリーシグナル相関を実現する手続き
続いて山口氏は、テレメトリーシグナルの相関を実現するための具体的な手続きを紹介した。アプリケーション側での計装、OpenTelemetryの利用、そしてバックエンド側でのデータの可視化など、実装に必要なステップを詳述した。
「OpenTelemetryを利用することで、異なるベンダー間でのデータの一貫性を保ちつつ、シグナルの相関を容易にすることができます」と山口氏は強調した。
OpenTelemetryは、traceIDやspanIDをメトリクスやログに埋め込む計装ライブラリを提供し、異なるデータソース間の相関を容易にする。例えばトレースの情報をメトリクスに埋め込むことで、メトリクスデータとトレースデータの一貫性を保ちつつ、相関を実現する。また計装の具体的な実装手順として、アプリケーションのコードにtraceIDとspanIDを埋め込む方法や、メトリクスデータにトレース情報を追加する方法を詳述した。
さらにバックエンド側でのデータの可視化についても解説した。Google CloudのCloud LoggingとCloud Traceを統合することで、ログとトレースのデータを関連付け、システムのパフォーマンスを可視化する方法を具体的に示した。これにより、システムの異常を迅速に特定し、適切な対策を講じることが可能になると述べた。またオープンテレメトリーの利用が、異なるベンダー間でのデータの一貫性を保ちつつ、シグナルの相関を容易にすることを強調した。
問題の根本原因を迅速に特定
山口氏はセッションのまとめとして以下の4つのポイントを挙げた。
一つ目は「第一原理からのデバッグができることこそがオブザーバビリティの本領」ということ。「第一原理に基づくデバッグは、システムの異常の根本原因を推測に頼らずに特定するための重要な手法であり、オブザーバビリティの真価を発揮するものです。これにより、システムの安定性と信頼性を確保することが可能です」と語った。
さらに二つ目として「各テレメトリーの性質を理解することで相関する際の処理を理解しやすくなる」ことを挙げた。「各テレメトリーシグナルの性質を理解することで、相関させる際の処理が明確になり、効率的にデータを関連付けることができます。これによりシステムの異常を迅速に特定し、トラブルシューティングの精度を向上させることができます」と強調した。
また三つ目に「各テレメトリーの性質に応じて相関を受けられる」ことを挙げた。「テレメトリーシグナルの相関は、それぞれの性質に応じた適切な方法で行う必要があります。これによりシステムの異常を効果的に特定し、根本原因を迅速に見つけることができます」と説明した。
最後に四つ目として「テレメトリー相関は計装とバックエンドでの可視化の両方で対応が必要となるので、各々統一的に扱う仕組みが必要です」と述べた。「テレメトリーシグナルの相関を実現するためには、計装とバックエンドでの可視化の両方で対応が必要で、それぞれを統一的に扱う仕組みが必要です。これによりシステムのパフォーマンスを総合的に把握し、問題の根本原因を迅速に特定することが可能となるのです」と結論を導いた。
山口氏は「テレメトリーシグナルの相関を通じて、システムの健全性を保つことができます。ぜひ、皆さんの環境でも実践してみてください」としてセッションを結んだ。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Obervability Conference 2022、OpenTelemetryの概要をGoogleのアドボケイトが解説
- Oracle Cloud Hangout Cafe Season4 #4「Observability 再入門」(2021年9月8日開催)
- Promscaleのデモから見えるタイムシリーズデータを使った現代的なオブザーバビリティ
- Observability Conference 2022、Splunkのエンジニアが説明するOpenTelemetryの入門編
- Kubernetesアプリケーションのトレーシング
- 「Odigos」でノーコードの分散トレーシングを実現する
- Observability Conference 2022、TVerによるNew Relic One導入事例を紹介
- Observability Conference 2022、日本ユニシスのエンジニアが解説するデベロッパーにとってのオブザーバビリティ
- Observability Conference 2022から、サイボウズのオブザーバービリティ事例を紹介
- 3/11「Observability Conference 2022」開催せまる! 実行委員オススメのみどころを紹介