Cloud Logging の概要

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

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

クライアント ライブラリを使用してアプリケーションをインストルメント化することで、作成したアプリケーションからログを収集できます。ただし、アプリケーションを常にインストルメント化する必要はありません。たとえば、一部の構成では、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 ダッシュボードを表示できます。

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

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

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

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

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

ログストレージ

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

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

ログのカテゴリ

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

  • プラットフォーム ログは、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 のコスト管理をご覧ください。