Google Cloud でのオブザーバビリティ

Google Cloud Observability には、アプリケーションの動作、健全性、パフォーマンスの把握に役立つオブザーバビリティ サービスが含まれています。アプリの動作やコンポーネントの接続の状態を可視化することで、予期しない変更をより迅速かつ効果的に予測して特定し、対応することができます。

このドキュメントには、次の情報が含まれています。

  • オブザーバビリティの概要と、アプリケーションの可用性と信頼性を維持するためにオブザーバビリティが重要な理由。
  • Google Cloud Observability でアプリケーションとインフラストラクチャの健全性をモニタリングし、維持する方法。
  • Google Cloud でオブザーバビリティ機能の利用を開始する方法。

オブザーバビリティについて

オブザーバビリティは、環境の状態を理解するためにテレメトリー データを収集、分析する包括的なアプローチです。テレメトリー データは、アプリケーションとアプリケーション インフラストラクチャによって生成された指標、ログ、トレースなどのデータで、アプリケーションの健全性とパフォーマンスに関する情報を提供します。

指標
指標は、CPU 使用率やリクエスト レイテンシなど、一定の間隔で測定する健全性またはパフォーマンスに関する数値データです。指標に予期しない変化があった場合は、調査が必要な問題が発生している可能性があります。指標パターンを経時的に分析することで、使用パターンをより深く理解し、リソースのニーズを予測することもできます。
ログ

ログとは、システムまたはアプリケーションのアクティビティを経時的に生成し、記録したものです。各ログには、タイムスタンプ付きのログエントリが含まれています。各ログエントリは、特定の時点でのイベントを表します。

多くの場合、ログには豊富な詳細情報が含まれており、アプリケーションの特定の部分で何が起きたのかを理解する上で役立ちます。ただし、アプリケーションの特定のコンポーネントの変更が別のコンポーネントのアクティビティとどのように関連しているのかを把握するには十分な情報ではありません。このようなギャップを埋めるのにトレースが役立ちます。

トレース

トレースは、分散アプリケーションの各部分におけるリクエストのパスを表します。あるアプリケーション コンポーネントの指標またはログエントリがアラート通知をトリガーした場合、別のコンポーネントの問題でトリガーされた可能性もあります。トレースを使用すると、リクエストのフローを追跡し、レイテンシ データを調べて、問題の根本原因を特定できます。

他のデータ

他のデータのコンテキストで指標、ログ、トレースを分析することで、追加の分析情報を得ることができます。たとえば、アラートの重大度のラベルや、ログのリクエストに関連付けられた顧客 ID から、トラブルシューティングやデバッグに役立つコンテキストを得ることができます。

分散アプリケーションでは、多くのシステムとソフトウェア コンポーネントが関連しています。また、オープンソースと商用ソフトウェアが混在することも少なくないため、モニタリング、デバッグ、トラブルシューティングが容易でない場合があります。

オブザーバビリティ ツールは、有意義なデータを収集し、データの探索、分析、関連付けを行う機能を提供することで、この複雑さを解消します。オブザーバビリティのある環境では、次のことが可能になります。

  • ユーザーに影響が及ぶ前に問題をプロアクティブに検出する
  • 既知の問題と新しい問題の両方をトラブルシューティングする
  • 開発中のアプリケーションをデバッグする
  • アプリケーションに対する変更の影響を計画し、把握する
  • データを探索して新しい分析情報を得る

端的に言うと、オブザーバビリティのある環境は、アプリケーションの信頼性の維持に役立ちます。アプリケーションは、可用性と障害に対するレジリエンスが現在の目標を達成している場合に信頼性があると言えます。

オブザーバビリティに関連する原則や手法など、信頼性プラクティスの詳細については、書籍『Site Reliability Engineering: How Google Runs Production Systems』をご覧ください。以下にトピックの一部を紹介します。

Google Cloud Observability

Google Cloud Observability のサービスを使用すると、テレメトリー データの収集、分析、関連付けを行うことができます。また、デフォルトのダッシュボードやアラート ポリシーなど、組み込みのデフォルトも用意されているため、すぐにご利用を開始いただけます。

Cloud Monitoring、Cloud Logging、Cloud Trace は、Google Cloud プロジェクトの作成時にデフォルトで有効になるサービスです。

Monitoring: 収集された指標を使用して、正常性とパフォーマンスのモニタリング、傾向や問題の特定、動作変更の通知を行います。

  • ほとんどの Google Cloud サービスの指標を自動的に収集します。
  • サードパーティ アプリケーションからシステムとアプリケーションの指標を収集します。
  • デフォルト ダッシュボードまたはカスタマイズされたダッシュボードを使用して、指標を可視化し、分析します。
  • 合成モニタリングを使用してアプリケーションのパフォーマンスをテストします。
  • サービスレベル目標(SLO)を定義して、サービスの信頼性をモニタリングします。
  • 問題が発生するとアラートが届きます。

Logging: 収集されたログを使用して、アプリケーションのデバッグとトラブルシューティングを行い、アプリケーションに関する分析情報を取得します。

  • ほとんどの Google Cloud サービスのログを自動的に収集します。
  • ほとんどの Google Cloud サービスの監査ログを自動的に収集します。
  • サードパーティ ソフトウェアからログを収集します。
  • ログを探索して分析します。
  • ログ分析を使用して、BigQuery でログやその他のデータ全体の分析を実行します。たとえば、BigQuery を使用して、ログ内の URL と既知の悪意のある URL の一般公開データセットを比較できます。
  • ログから指標を作成します。
  • 指定したメッセージがログに表示されたときにアラートを受け取ります。

Error Reporting: 実行中のクラウド サービスで発生したエラーを表示して分析します。

  • Error Reporting がログエントリで検出したエラーを集計し、関連するログを表示します。
  • アプリケーションが Error Reporting API に送信するエラーを集計します。

Trace: デバッグとトラブルシューティングの際に、アプリケーション リクエストのフローとレイテンシを表示して分析します。

  • アプリケーション内でリクエストがどのように伝播するかを追跡します。
  • アプリケーションからレイテンシ データを収集し、データのグラフを表示します。
  • パフォーマンスの低下を示すレイテンシ レポートを表示します。
  • アプリケーションのレイテンシ プロファイルに変化があった場合にアラートを受け取ります。
  • カスタム属性を使用してトレースにアノテーションを付けます。
  • トレースを BigQuery にエクスポートして、他のデータと一緒に探索できるようにします。

Cloud Profiler: アプリケーションの CPU とメモリ使用量の状況を分析して、パフォーマンスを向上させる機会を特定できます。

  • アプリケーションから CPU 使用率とメモリ割り当てのデータを収集します。
  • アプリケーションで最もリソースを消費している部分を特定し、アプリケーションの全体的なパフォーマンスに関する分析情報を取得します。

使ってみる

このセクションでは、Google Cloud のオブザーバビリティ機能に慣れるための手順について説明します。

クイックスタートを試す

クイックスタートを試して、利用可能なサービスに慣れてください。

自動的に収集されたデータを確認する

ほとんどの Google Cloud サービスは、事前定義された指標とログを自動的に生成します。つまり、追加の構成を行うことなく、サポートされている Google Cloud サービスのオブザーバビリティ データを確認できます。

  • Google Kubernetes Engine(GKE)Compute EngineCloud SQL などの一部の Google Cloud サービスでは、サービスのコンテキストでオブザーバビリティ データを表示するためのデフォルトのダッシュボードが Google Cloud コンソールに用意されています。
  • Compute Engine、GKE、Cloud Run はデフォルトでシステム指標とログを生成します。追加データを収集するように構成することもできます。
  • Cloud Run functions と App Engine は、指標、ログ、トレースを自動的に生成します。

収集した指標を Metrics Explorer でグラフ化したり、ログ エクスプローラ でログを確認できます。また、Trace でトレースを表示することもできます。関連データをまとめて確認できるように、カスタム ダッシュボードを作成できます。たとえば、仮想マシンのログ、パフォーマンス指標、アラート ポリシーを表示するダッシュボードを作成できます。

追加データを収集するように Compute Engine VM を構成する

デフォルトでは、Compute Engine VM は Ops エージェントを使用せずに基本的なシステム指標とログのみを収集します。

Ops エージェントをインストールして、Compute Engine インスタンスとアプリケーションから追加のテレメトリー データ(ログ、指標、トレース)を収集し、トラブルシューティング、パフォーマンス モニタリング、アラートに使用します。

追加データを収集するように GKE クラスタを構成する

デフォルトでは、GKE クラスタはシステムログとシステム指標を Logging と Monitoring に送信します。Google Cloud Managed Service for Prometheus は、サードパーティおよびユーザー定義の指標の収集を行います。

カスタムデータを収集するように Cloud Run を構成する

Prometheus 指標を書き込む Cloud Run サービスがある場合は、Prometheus サイドカーを使用して Cloud Monitoring に指標を送信できます。

Cloud Run サービスが OTLP 指標を書き込む場合は、OpenTelemetry サイドカーを使用できます。例については、サイドカーを使用して OTLP 指標を収集するためのチュートリアルをご覧ください。

アプリケーションを計測化する

計測化とは、テレメトリー データを出力するためのコードをアプリケーションに追加することです。アプリケーションから指標、ログ、トレースを収集してデータを Google Cloud などのベンダーに送信できるオープンソースの計装フレームワークがいくつかあります。ただし、アプリケーションを計測化する必要がない場合もあります。たとえば、Cloud Run、Cloud Run functions、App Engine では自動的にトレースが実行されます。

アプリケーションを計測化する場合は、ベンダー固有またはプロダクト固有の API やクライアント ライブラリではなく、OpenTelemetry などのオープンソースの計測化フレームワークを使用することをおすすめします。アプリケーションの計装の詳細については、計装とオブザーバビリティをご覧ください。

アプリケーションを計測して Google Cloud にテレメトリーを送信する方法を示すコードサンプルについては、以下をご覧ください。

また、次のトピックも参考にしてください。