Cloud Logging の概要

このドキュメントでは、Cloud Logging の概要について説明します。Cloud Logging は、ストレージ、検索、分析、モニタリングをサポートするリアルタイムのログ管理システムです。 Cloud Logging は、Google Cloud リソースから自動的にログを収集します。 アプリケーション、オンプレミスのリソース、他のクラウド プロバイダのリソースからログを収集することもできます。アラート ポリシーを、特定の種類のイベントがログで報告された場合に Cloud Monitoring から通知されるように、構成することもできます。規制またはセキュリティ上の理由から、ログデータの保存場所を決定できます。

アプリケーションとサードパーティ ソフトウェアからログを収集する

クライアント ライブラリを使用してアプリケーションをインストルメント化することで、作成したアプリケーションからログを収集できます。ただし、アプリケーションを常にインストルメント化する必要はありません。たとえば、一部の構成では、Ops エージェントを使用して、stdout または stderr に書き込まれたログを Google Cloud プロジェクトに送信できます。

また、Ops エージェントをインストールして、そのアプリケーションから Google Cloud プロジェクトにログを書き込むように構成することで、nginx などのサードパーティ アプリケーションからログデータを収集することもできます。

要件に最適な方法を判断するのに役立つ情報については、Logging エージェントとクライアント ライブラリのどちらを使用するかをご覧ください。

ログのトラブルシューティングと分析

ログデータを表示して分析するには、Google Cloud コンソール(ログ エクスプローラまたは [ログ分析] ページ)を使用します。両方のインターフェースでログのクエリ、表示、分析を行うことができます。ただし、クエリ言語は異なり、機能も異なります。

サービスとアプリケーションのパフォーマンスをトラブルシューティングして分析する場合は、ログ エクスプローラを使用することをおすすめします。このインターフェースは、個々のログエントリを表示したり、関連するログエントリを検索したりできるように設計されています。たとえば、ログエントリがエラーグループの一部である場合、そのエントリには、エラーに関する詳細情報にアクセスできるオプションのメニューのアノテーションが付けられます。

たとえば、一定期間に特定の URL に発行された HTTP リクエストの平均レイテンシを計算するために、ログの集計オペレーションを行う場合には、Log Analytics インターフェースを使用します。このインターフェースでは、SQL を使用してログデータをクエリするため、SQL の機能を活用してログデータを理解できます。

プログラムでログデータをクエリする場合は、Cloud Logging API または Google Cloud CLI を使用して、Google Cloud プロジェクトからログデータをエクスポートできます。

詳細については、ログのクエリと表示の概要をご覧ください。

ログをモニタリングする

ログで特定の種類のイベントが発生したときに通知するように、Cloud Logging を構成できます。これらの通知は、ログエントリに特定のパターンがある場合、またはログデータに傾向が検出された場合に送信できます。 Google Cloud サービスのエラー率を確認する場合は、事前構成されている Cloud Logging ダッシュボードを確認できます。

たとえば、重要なセキュリティ関連のイベントなどの特定のメッセージが発生したときに通知を受け取るには、ログベースのアラート ポリシーを作成します。ログベースのアラート ポリシーは、特定のパターンのログをモニタリングします。そのパターンが見つかると、Monitoring によって通知が送信され、インシデントが作成されます。ログベースのアラート ポリシーは、次のような重要であるもののまれなイベントに役立ちます。

  • ユーザーがサービス アカウントのセキュリティ キーにアクセスするようなイベントが監査ログに表示されたとき。
  • アプリケーションがログにデプロイ メッセージを書き込み、デプロイの変更がログに記録されたとき。

または、傾向またはイベントの発生を時系列でモニタリングする場合。このような場合は、ログベースの指標を作成できます。 ログベースの指標により、いずれかの条件に一致するログエントリの数をカウントすることや、レスポンス時間などの情報を抽出してヒストグラムに整理することができます。たとえば、レスポンス時間が許容できないレベルまで増加するなど、パフォーマンスが変化したときに通知されるアラート ポリシーを構成することもできます。ログベースの指標は、次のいずれかを行う場合に適しています。

  • ログ内で警告やエラーなどのメッセージの発生回数をカウントし、しきい値を超えると通知を受け取る。
  • ログのレイテンシ値などのデータの傾向を監視し、許容できない値に変化した場合に通知を受け取る。
  • グラフを作成して、ログから抽出した数値データを表示する。

詳細については、ログのモニタリングをご覧ください。

ログストレージ

ログを保存するロケーションを構成する必要はありません。デフォルトでは、Google Cloud プロジェクトは受信したすべてのログを Cloud Logging ログバケットに自動的に保存します。たとえば、Google Cloud プロジェクトに Compute Engine インスタンスが含まれている場合、Compute Engine によって生成されるすべてのログは自動的に保存されます。ただし、必要に応じて、どのログを保存するか、どれを破棄するか、どこにログを保存するかなど、ログ ストレージに関するさまざまな側面を構成できます。

ログエントリを次の宛先にルーティングまたは転送できます。宛先は、同じ Google Cloud プロジェクトまたは別の Google Cloud プロジェクト内にすることができます。

  • Cloud Logging バケット: Cloud Logging のストレージが提供されます。ログバケットには、複数の Google Cloud プロジェクトで受信するログエントリを保存できます。Log Analytics を使用するようにログバケットをアップグレードし、リンクされた BigQuery データセットを作成すると、Cloud Logging データを他のデータと結合できます。ログバケットに保存されているログの表示については、ログのクエリと表示の概要Cloud Logging バケットにルーティングされたログの表示をご覧ください。
  • BigQuery データセット: BigQuery データセットにログエントリのストレージを提供します。保存されたログエントリに対して、ビッグデータ分析機能を使用できます。Cloud Logging のデータを他のデータソースと組み合わせるには、Log Analytics を使用するようにログバケットをアップグレードし、リンクされた BigQuery データセットを作成することをおすすめします。BigQuery に転送されたログエントリの表示については、BigQuery に転送されたログを表示するをご覧ください。
  • Cloud Storage バケット: Cloud Storage にログエントリを保存します。ログエントリは、JSON ファイルとして保存されます。 Cloud Storage に転送されたログエントリの表示については、Cloud Storage に転送されたログを表示するをご覧ください。
  • Pub/Sub トピック: サードパーティ統合をサポートします。ログエントリは JSON 形式にフォーマットされ、Pub/Sub トピックにルーティングされます。Pub/Sub に転送されたログエントリの表示については、Pub/Sub に転送されたログを表示するをご覧ください。
  • Splunk: Splunk をサポートします。ログエントリを Pub/Sub トピックにルーティングし、Splunk を使用してそのトピックに登録する必要があります。
  • Google Cloud プロジェクト: ログエントリを異なる Google Cloud プロジェクトにルーティングします。ログエントリを別の Google Cloud プロジェクトにルーティングすると、宛先のプロジェクトのログルーターがログエントリを受信し、それらを処理します。宛先プロジェクトのシンクは、受信したログエントリのルーティング方法を決定します。 宛先プロジェクトがログエントリを宛先プロジェクトが所有するログバケットにルーティングすると、Error Reporting によってログエントリを分析できます。
  • その他のリソース: 異なるプロジェクトにあるサポートされている宛先にログエントリを転送します。使用するパスについては、宛先パスの形式をご覧ください。

データ リージョンのサポートなどの詳細については、ルーティングとストレージの概要をご覧ください。

ログのカテゴリ

ログのカテゴリは、利用可能なロギング情報の説明をサポートすることを目的としています。あるカテゴリは、別のカテゴリの一部を含む場合があります。

  • プラットフォーム ログは、Google Cloud サービスによって書き込まれるログです。これらのログは、問題のデバッグとトラブルシューティングに役立ち、使用中の Google Cloud サービスについて理解を深める助けにもなります。たとえば、VPC フローログは、VM インスタンスによって送受信されるネットワーク フローのサンプルを記録します。

  • コンポーネント ログはプラットフォーム ログに似ていますが、システムで実行される Google 提供のソフトウェア コンポーネントによって生成されます。たとえば、GKE は、ユーザーが自分の VM または独自のデータセンターで実行できるソフトウェア コンポーネントを提供します。ログはユーザーの GKE インスタンスから生成され、ユーザーの Google Cloud プロジェクトに送信されます。GKE は、ログまたはそのメタデータを使用してユーザー サポートを提供します。

  • 監査ログを使用すれば、「誰が、どこで、いつ、何をしたのか」という問いに答えることができます。

    • Cloud Audit Logs は、Google Cloud リソース内での管理アクティビティとアクセスに関する情報を提供します。 監査ログを有効にすると、セキュリティ、監査、コンプライアンス エンティティが Google Cloud のデータとシステムをモニタリングして、脆弱性や外部データの不正使用の可能性を確認できます。 Google Cloud でサポートされるサービスの一覧については、監査ログ付きの Google サービスをご覧ください。

    • アクセスの透明性は、Google のスタッフがお客様の Google Cloud のコンテンツにアクセスしたときに行ったアクションのログを提供します。アクセスの透明性ログは、組織の法的要件と規制上の要件への準拠状況を追跡するのに役立ちます。 Google Cloud でサポートされているサービスの一覧については、アクセスの透明性ログ付きの Google サービスをご覧ください。

  • ユーザー作成のログは、カスタム アプリケーションやサービスによって書き込まれたログです。 通常、これらのログは、次のいずれかの方法を使用して Cloud Logging に書き込まれます。

  • マルチクラウドログハイブリッド クラウドログは、Microsoft Azure などの他のクラウド プロバイダのログと、オンプレミス インフラストラクチャのログを指します。

ログのデータモデル

Cloud Logging がログデータの整理に使用するデータモデルによって、そのデータをクエリできるディメンションが決まります。たとえば、ログは個別エントリの名前付きコレクションであるため、ログの名前でデータをクエリできます。同様に、各ログは LogEntry オブジェクトとしてフォーマットされるログエントリで構成されるため、LogEntry の値が一部の条件に一致するログエントリのみを取得するクエリを作成できます。たとえば、severity フィールドの値が ERROR のログエントリのみを表示できます。

各ログエントリは、ステータスを記録するか、VM インスタンスの作成などの特定のイベントを記述します。これらのエントリは、少なくとも次の要素で構成されます。

  • イベントが発生した日時、または Cloud Logging がそれを受信した日時を示すタイムスタンプ。
  • ログエントリのソースに関する情報。このソースはモニタリング対象リソースと呼ばれます。モニタリング対象リソースの例としては、個々の Compute Engine VM インスタンスや Google Kubernetes Engine コンテナが挙げられます。 モニタリング対象リソースタイプの詳細については、モニタリング対象リソースとサービスをご覧ください。
  • 構造化されていないテキストデータ、または JSON 形式の構造化されたテキストデータのいずれかとして提供されるペイロードで、メッセージとも呼ばれるもの。
  • ログが属するログの名前。 ログの名前には、ログエントリが属するリソースのフルパスと、それに続く識別子が含まれます。ログ名の例を次に示します。

    • projects/my-project/logs/stderr
    • projects/my-project/logs/stdout
    • projects/my-project/compute.googleapis.com/activity

アクセス制御

Identity and Access Management のロールは、プリンシパルがログにアクセスする機能を制御します。 事前定義ロールをプリンシパルに付与するか、カスタムロールを作成できます。必要な権限の詳細については、アクセス制御をご覧ください。

維持率

ログエントリは、一定期間ログバケットに保存され、その後削除されます。詳細については、転送とストレージの概要: 保持をご覧ください。

料金とコストの管理

料金については、Cloud Logging の料金をご覧ください。

Logging の費用を削減する戦略については、Logging のコスト管理をご覧ください。