ロギングデータをエクスポートするための設計パターン

この記事では、一般的なロギング エクスポート シナリオの設計パターンとベスト プラクティスを紹介する一連の記事を紹介します。

Cloud Logging は、ログ用の運用データストアと豊富なエクスポート機能を提供します。ログをエクスポートする理由には、コンプライアンス要件に準拠する目的で長期保存(月単位または年単位)用にログを保持すること、ログから抽出した指標に対してデータ分析を実行することなどがあります。Cloud Logging は、Cloud Storage、BigQuery、Pub/Sub、Elasticsearch にエクスポートできます。

ログのエクスポート

Cloud Logging では、集約シンクを使用して組織のすべてのログをエクスポートしたり、ログ エクスポートを使用して特定の Google Cloud プロジェクトのログをエクスポートしたりできます。ロギング フィルタを使用すると、特定のプロジェクトやクラウド リソースを包含または除外できます。たとえば、すべての Compute Engine ログをエクスポートし、サイズの大きい Cloud Load Balancing ログを除外することなどが可能です。この方法により、すべてのログをエクスポートするか、または特定のログをエクスポートするかを柔軟に決定できます。

組織では、集約シンクを使用してすべてのプロジェクトから、または 1 つのフォルダからログをエクスポートできます。この機能により、組織のすべてのプロジェクトに対してログ エクスポート ポリシーを適用できます。組織レベルの IAM コントロールを使用すると、ユーザーのアクセス権をログ エクスポート設定の変更のみに限定できます。

集約シンクに代わる方法であるログ エクスポートは、組織全体ではなくプロジェクト単位で有効にされます。それ以外の点では、ログ エクスポートは集約シンクと同じです。

エクスポート方法

Cloud Logging からログをエクスポートするには、次の 3 つの方法があります。

  • ファイルへのエクスポート: Cloud Storage に保存された JSON ファイル
  • BigQuery へのエクスポート: BigQuery データセットに作成されたロギング テーブル
  • Pub/Sub へのエクスポート: Pub/Sub トピックに配信された JSON メッセージ

エクスポートされる内容

Cloud Logging エクスポートの対象となるログのタイプは次の 2 種類です。

モニタリング対象サービスのログ
これらのログには、クラウド インフラストラクチャのサービスから作成されたログ、マネージド サービス(Compute Engine、Cloud SQL、CDatastore など)のログ、モニタリング対象サービスリストに含まれるその他のサービスのログが含まれます。さらに、Cloud Logging エージェントによって提供される syslogjenkinsmongodb などのログと、エージェント ログ リストに記載されている他のすべてのログも含まれます。基盤となる Fluentd 構成を設定することで、追加のログを報告するように Cloud Logging エージェントを構成できます。
Cloud 監査ログ
Cloud 監査ログでは、プロジェクトおよび組織ごとに、管理アクティビティとデータアクセスの 2 種類の監査ログが維持されます。Google Cloud サービスにより、こうしたログに監査ログエントリが書き込まれ、Cloud プロジェクト内で誰が、何を、どこで、いつ行ったかを調べるときに利用できます。管理アクティビティ ログには、リソースの構成またはメタデータを変更する API 呼び出しやその他の管理アクションのログエントリが含まれます。データアクセス監査ログには、ユーザー提供データを作成、変更、または読み込む API 呼び出しが記録されます。監査ログを作成するサービスの一覧をご覧ください。

ロギングの形式

ログのタイプに応じて、3 種類のロギング ペイロード形式があります。

textPayload
コンテンツは 1 つの文字列として表現されます。この形式を使用するログの例として、Cloud Logging エージェント(syslog を含む)により報告されるログと Cloud SQL ログがあります。
protoPayload
コンテンツはプロトコル バッファとして表現され、ログ対象の特定のコンテンツに応じて異なります。管理アクティビティ監査ログとデータアクセス監査ログは、どちらもこの形式でエクスポートされます。これらのログに対応する BigQuery の JSON 構造とテーブル構造は、エクスポートされるエントリのタイプに応じて異なります。
jsonPayload
コンテンツは JSON オブジェクトとして表現され、ログに記録される特定のコンテンツに応じて異なります。この形式を使用するログの例として、Compute Engine や Compute Engine オートスケーラーのアクティビティ ログがあります。

ログ形式と、BigQuery テーブル構造および JSON エクスポート ファイル構造の対応については、スキーマとフィールドのドキュメントで詳しく説明します。BigQuery Export に対するクエリを記述する場合、またはファイルや Pub/Sub エクスポート JSON ファイルを解析する場合には、ロギング ペイロード形式を検討してください。ログの詳細な形式については、LogEntry の API 定義にリストされています。

ロギング エクスポートのシナリオ

このシリーズの記事では、ログをエクスポートするシナリオについて説明します。各シナリオでは、要件、設定、使用方法、およびエクスポートの共有方法を詳しく説明します。

次のステップ