マイクロサービスの障害で胃を痛めないための「シン・オブザーバビリティ基盤」をOpenTelemetryで作る:Cloud Nativeチートシート(25)
Kubernetesやクラウドネイティブをより便利に利用する技術やツールの概要、使い方を凝縮して紹介する連載。今回は、トレース、ログ、メトリクスを関連付け、Grafana、Promtail、Prometheusを利用した横断的なオブザーバビリティ基盤を紹介します。
勘や経験に頼るマイクロサービスのトラブル調査で胃を痛めないために
Kubernetesやクラウドネイティブをより便利に利用する技術やツールの概要、使い方を凝縮して紹介する本連載「Cloud Nativeチートシート」。前回は、OpenTelemetryやObservabilityの概要について紹介し、簡単なサンプルアプリケーションを使った分散トレーシングの方法を紹介しました。トレースを収集、可視化することによって、マイクロサービスをまたがるリクエストの追跡が容易になりました。
しかし、分散トレーシングだけではOpenTelemetryの真の力を発揮できません。トレースによって「どの処理に時間がかかっているのか」「どの処理にエラーが発生しているのか」を知ることはできても、その原因を特定するには不十分なケースは多々あります。そのような場合、問題があるトレースやスパンに対応するログやメトリクスを調べることで原因の特定に役立つことがありますが、異なるテレメトリーを関連付けながら調査するのは容易ではありません。
OpenTelemetryを用いることで、これらのテレメトリーを関連付けることができます(下図の「OpenTelemetry Collection」)。それによって、問題のあるトレースに対応するログやメトリクスを調べることができ、トラブルシューティングを効率化できます。
今回は、OpenTelemetryやオープンソースソフトウェア(OSS)のモニタリングツールを用いてテレメトリーを関連付けることで、Grafanaダッシュボード上でログ、トレース、メトリクス間を行き来できるような三位一体の、いわば「シン・オブザーバビリティ基盤」を紹介します。
目次
テレメトリーを関連付けることのメリット
前回紹介したOpenTelemetry Collection(下図)では、テレメトリーを横串で探索できる情報(例えば、テレメトリー取得時間やクラスタ、Pod、コンテナなどのリソース情報、トレースIDやスパンIDなどのトレース情報)を付与します。
このようにログ、トレース、メトリクスといったテレメトリーを“関連付ける”ことによって、さまざまな恩恵、特にトラブルを生じた際の解析性向上に寄与できます。下記はトラブルシューティングの一例です。
- エラーログから関連したトレースを見ることで、一連のリクエスト処理を追うことができ、エラーログ前後のイベントを把握する
- レイテンシの大きい異常メトリクスから関連したトレースを見ることで、「マイクロサービスのどの箇所で障害が起きているか」を確認する
テレメトリー同士が関連していない場合、ログコンソールやダッシュボードを用いながら、勘や経験を頼りにテレメトリー間を関連付けることもしばしばあることでしょう。しかし一刻を争う有事の際に、原因特定までのリードタイムは最小化できることが望ましいです。
テレメトリー間を関連付け、テレメトリーから対応するテレメトリーを即座に特定できることは、上記のような場合大きなアドバンテージになります。特に動的にリソースが変化するクラウドネイティブ環境において、テレメトリー間の関連性を保ち続ける(見失わない)ことが非常に重要です。
テレメトリーの関連付け
各テレメトリー間を関連付けるためにはどのようにすればいいのでしょうか? OpenTelemetryのコンセプトに触れながら説明します。
テレメトリーの“関連付け”――OpenTelemetryのコンセプト
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- クラウドネイティブの2023年はどうなる? CNCFのCTOが予想
Cloud Native Computing Foundation(CNCF)のCTO(最高技術責任者)であるクリス・アニズィック氏が、2023年のクラウドネイティブ分野に関する予想を公表した。「クラウドIDE」「FinOps」「SBOM」「GreenOps」「Web Assembly」「OpenTelemetry」「Backstage」などのキーワードが見られる。 - New Relicがアプリの問題解決で開発者を助ける新機能、「開発者は本来の仕事に集中できる」
New Relicの日本法人が可観測性プラットフォームで新機能「New Relic CodeStream」を発表した。 開発ツールを離れることなくソースコードの問題箇所を特定し、チーム内で情報を共有して迅速に解決できるという。 - Microsoft、Azure向けの障害予測・障害軽減サービス「Project Narya」を発表
Microsoftは、Azure向けの障害予測と障害軽減のためのサービス「Project Narya」を発表した。仮想マシンの障害回避を目的としており、フィードバックループを通じて障害対応策を自動的に改善できるという。