シンクを構成する

このドキュメントでは、Cloud Console、Cloud Logging API、gcloud コマンドライン ツールを使用してログエントリをルーティングするシンクを作成および管理する方法について説明します。

要約すると、ログをルーティングするには、フィルタ式と宛先を含む 1 つ以上のシンクを作成します。新しいログエントリを受け取ると、各シンクと比較します。ログエントリがシンクのフィルタと一致する場合、ログエントリのコピーがシンクのエクスポート先に書き込まれます。シンクのより幅広い概念については、ルーティングとストレージの概要: シンクをご覧ください。

Cloud Console を使用すると、次のことができます。

  • すべてのシンクを 1 か所で確認および管理できます。
  • シンクを作成する前に、シンクのフィルタによって照合されたログエントリをプレビューします。
  • シンクのシンク先を作成して承認します。

ただし、Cloud Console を使用する場合は、Cloud プロジェクトでのみシンクを作成または表示できます。gcloud コマンドライン ツールまたは Cloud Logging API を使用して組織、フォルダ、請求先アカウントにシンクを作成するには、集約シンクをご覧ください。

選択できる宛先

同じ Cloud プロジェクト内または Cloud プロジェクト間で、次の場所にログをルーティングできます。

  • Cloud Storage: Cloud Storage バケットに保存される JSON ファイル。
  • Pub/Sub: Pub/Sub トピックに配信される JSON メッセージ。サードパーティによる Logging との統合サービス(Splunk など)をサポートします。
  • BigQuery: BigQuery データセットに作成されるテーブル。
  • 別の Cloud Logging バケット: Cloud Logging ログバケットに保持されるログエントリ。

組織、フォルダ、請求先アカウントにシンクを作成するには、集約シンクをご覧ください。

始める前に

シンクを作成する前に、次のことを確認します。

  • Logs Explorer に表示されるログを持つ Google Cloud プロジェクトを所有している。

  • ログの送信元のソース Cloud プロジェクトに対して、次のいずれかの IAM ロールがあります。

    • オーナーroles/owner
    • Logging 管理者roles/logging.admin
    • ログ設定書き込み (roles/logging.configWriter)

    これらのロールに含まれる権限を使用して、シンクを作成、削除、変更できます。IAM ロールの設定については、Logging アクセス制御ガイドをご覧ください。

  • サポート対象の宛先にリソースがある、または作成できる。

    gcloud コマンドライン ツール、Cloud Console、Google Cloud APIs ログシンクのいずれかでログシンクのエクスポート先を作成してから、ログシンクを作成してください。任意の組織の任意の Cloud プロジェクトにエクスポート先を作成できますが、シンクのサービス アカウントにエクスポート先への書き込み権限があることを確認する必要があります。

シンクを作成する

Cloud Console または gcloud コマンドライン ツールを使用して Cloud プロジェクトにシンクを作成する手順を次に示します。

Cloud プロジェクト 1 つにつき、最大 200 個のシンクを作成できます。

シンクを作成する方法は次のとおりです。

Console

  1. Cloud Console で、[ロギング] > [ログルーター] ページに移動します。

    ログルーターに移動

  2. 既存の Cloud プロジェクトを選択します。

  3. [シンクを作成] を選択します。

  4. [シンクの詳細] パネルで、次の詳細を入力します。

    • シンク名: シンクの識別子を指定します。シンクを作成した後にシンクを変更することはできませんが、シンクを削除して新しいシンクを作成することはできます。

    • シンクの説明(省略可): シンクの目的またはユースケースについて説明します。

  5. [シンクのエクスポート先] パネルで、シンクのサービスとエクスポート先を選択します。

    • シンクサービスの選択: ログを転送するサービスを選択します。

    選択したサービスに基づいて、次のエクスポート先から選択できます。

    • Cloud Logging バケット: Logging バケットを選択または作成します。
    • BigQuery テーブル: エクスポートされたログを受信する特定のデータセットを選択または作成します。パーティション分割テーブルを使用することもできます。
    • Cloud Storage バケット: エクスポートされたログを受信する特定の Cloud Storage バケットを選択または作成します。
    • Pub/Sub トピック: エクスポートされたログを受信する特定のトピックを選択または作成します。
    • Splunk: Splunk サービスの Pub/Sub トピックを選択します。
    • その他の Cloud プロジェクト: Logging、BigQuery、Cloud Storage、または Pub/Sub のサービスと宛先の情報を、次の形式で手動で追加します。

      SERVICE.googleapis.com/projects/PROJECT_ID/SINK_DESTINATION/DESTINATION_ID
      

      たとえば、シンク先が BigQuery データセットの場合、シンクのエクスポート先は次のようになります。

      bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID
      

      Cloud プロジェクト間でログをルーティングする場合は、適切なエクスポート先権限が必要です。

  6. [包含フィルタの作成] パネルで、シンクに含めるログを選択します。

    1. 含めるログエントリに一致するフィルタ式を入力します。フィルタを設定しない場合、Cloud プロジェクトからのログはすべて宛先にルーティングされます。

      たとえば、すべてのデータアクセス ログを 1 つの Logging バケットにルーティングするようにフィルタを作成できます。このフィルタは次のようになります。

      LOG_ID("cloudaudit.googleapis.com/data_access") OR LOG_ID("externalaudit.googleapis.com/data_access")
      

      フィルタの長さは 20,000 文字までです。

    2. 正しいフィルタを入力したことを確認するには、[ログをプレビュー] を選択します。フィルタが事前に入力された状態で、ログ エクスプローラが新しいタブで開きます。

  7. (省略可)[除外フィルタの作成] パネルで、シンクから除外するログを選択します。

    1. [除外フィルタ名] フィールドに名前を入力します。

    2. [除外フィルタの作成] セクションで、除外するログエントリに一致するフィルタ式を入力します。sample 関数を使用して、除外するログエントリの一部を選択することもできます。

    シンクごとに最大 50 個の除外フィルタを作成できます。フィルタの長さは 20,000 文字までです。

  8. [シンクを作成] を選択します。

API

  1. Cloud プロジェクトにログシンクを作成するには、Logging API の projects.sinks.create を使用します。LogSink オブジェクトで、メソッドのリクエストの本文に適切な必要な値を指定します。

    • name: シンクの識別子。シンクを作成した後は、シンクの名前は変更できませんが、シンクを削除して新しいシンクを作成することはできます。
    • destination: ログのルーティング先となるサービスと宛先。たとえば、シンクのエクスポート先が BigQuery データセットの場合、destination は次のようになります。

      bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID
      
  2. LogSink オブジェクトで、適切なオプション情報を入力します。

    • filter : filter プロパティを設定して、シンクに含めるログエントリに一致するようにします。フィルタを設定しない場合、Cloud プロジェクトのすべてのログは宛先にルーティングされます。フィルタの長さは 20,000 文字までです。
    • exclusions: シンクから除外するログエントリに一致するように、このプロパティを設定します。sample 関数を使用して、除外するログエントリの一部を選択することもできます。シンクごとに最大 50 個の除外フィルタを作成できます。
    • description: シンクの目的またはユースケースを説明するように、このプロパティを設定します。
  3. projects.sinks.create を呼び出してシンクを作成します。

  4. API レスポンスで返された writer_identity フィールドからサービス アカウント名を取得します。

  5. そのサービス アカウントにシンクのエクスポート先への書き込み権限を付与します。

    シンクのエクスポート先を変更する権限がない場合は、その変更を行うことができるユーザーにサービス アカウント名を送信します。

    リソースに対する権限をサービス アカウントに付与する方法については、エクスポート先の権限の設定セクションをご覧ください。

Logging API を使用してシンクを作成する方法については、LogSink リファレンスをご覧ください。

gcloud

シンクを作成するには、次のgcloud logging sinks createコマンドを実行します。

次のように、コマンドの変数に適切な値を指定します。

  • SINK_NAME: シンクの識別子。シンクを作成した後でシンクの名前を変更することはできませんが、シンクを削除して新しいシンクを作成できます。
  • SINK_DESTINATION: ログのルーティング先となるサービスと宛先。たとえば、シンクのエクスポート先が BigQuery データセットの場合、SINK_DESTINATION は次のようになります。

    bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID
    
  • OPTIONAL_FLAGS には次のフラグが含まれています。

    • --log-filter : このフラグを使用して、シンクに含めるログエントリに一致するフィルタを設定します。フィルタを設定しない場合、Cloud プロジェクトのすべてのログは宛先にルーティングされます。
    • --exclusion: シンクから除外するログエントリの除外フィルタを設定するには、このフラグを使用します。sample 関数を使用して、除外するログエントリの一部を選択することもできます。このフラグは、次のように繰り返すことができます。シンクごとに最大 50 個の除外フィルタを作成できます。
    • --description: このフラグは、シンクの目的またはユースケースを説明するために使用します。
gcloud logging sinks create SINK_NAME
SINK_DESTINATION OPTIONAL_FLAGS

たとえば、Logging バケットへのシンクを作成する場合、コマンドは次のようになります。

gcloud logging sinks create my-sink logging.googleapis.com/projects/myproject123/locations/global/buckets/my-bucket \
  --log-filter='logName="projects/myproject123/logs/matched"' --description="My first sink"

その他のフラグや例など、gcloud コマンドライン ツールを使用したシンクの作成について詳しくは、gcloud logging sinks リファレンスをご覧ください。

シンクのエクスポート先のログを表示する方法については、ルーティングされたログを検索するをご覧ください。

シンクを作成した後、logging.googleapis.com/exports/ 指標を使用して、受信したログエントリの数と量を表示できます。

エラー通知を受け取った場合は、ルーティングとシンクのトラブルシューティングをご覧ください。

異なる Cloud プロジェクトのログバケット間でログをルーティングする

シンクが作成されたプロジェクトとは別の Cloud プロジェクトのエクスポート先にログを転送できます。

そのためには、以下のいずれかを行う必要があります。

  • シンクのサービス アカウントに、エクスポート先に書き込む roles/logging.bucketWriter ロールを付与します。手順については、エクスポート先の権限をご覧ください。

  • ログの送信元の Cloud プロジェクトに対する、次のいずれかの IAM 権限を持っている必要があります。

    • オーナーroles/owner
    • Logging 管理者roles/logging.admin
    • ログ設定書き込み (roles/logging.configWriter)

    宛先の Cloud プロジェクトで新しい Logging バケットを作成する場合は、次の権限のいずれかが必要です。

シンクを管理する

シンクが作成されると、次のアクションを実行できます。

  • シンクの詳細を表示する
  • シンクを更新する
  • シンクを無効にする
  • シンクを削除する

シンクを表示して管理する方法は次のとおりです。

Console

シンクは、[ログルーター] ページで表示および管理できます。

[ログルーター] に移動

Cloud Console の任意の場所からリソース セレクタを使用して、シンクを含む Cloud プロジェクトが選択されていることを確認します。

プルダウン メニューでプロジェクトを選択しているところです。

集約シンクを表示するには、シンクを含む組織、フォルダ、または請求先アカウントを選択します。

[ログルーター] ページには、シンクのテーブルサマリが含まれています。表の各行には、シンクのプロパティに関する情報が含まれています。

  • 有効: シンクの状態が有効か無効かを示します。
  • タイプ: シンクの宛先サービス(Cloud Logging bucket など)。
  • 名前: シンクの作成時に指定されたシンクの識別子(_Default など)。
  • 説明: シンクの作成時に指定されたシンクの説明。
  • エクスポート先: ルーティングされたログエントリを送信する宛先の完全な名前。
  • 作成日時: シンクが作成された日時。
  • 更新日時: シンクが最後に編集された日時。

表の各行には、メニュー があり、次のオプションを利用できます。

  • シンクの詳細を表示する: シンクの名前、説明、サービス、エクスポート先、包含フィルタと除外フィルタを表示します。[編集] を選択すると、[シンクを編集] パネルが開きます。
  • シンクを編集: シンクのパラメータを更新できる [シンクを編集] パネルを開きます。
  • シンクを無効化: シンクを無効にし、シンクのエクスポート先へのルーティングを停止します。 シンクの無効化の詳細については、ログの取り込みを停止するをご覧ください。
  • シンクを有効化: 無効になっているシンクを有効にして、シンクのエクスポート先にルーティングを再開します。
  • シンクを削除: シンクを削除し、シンクのエクスポート先へのログの転送を停止します。_Default シンクと _Required シンクは削除できませんが、_Default シンクを無効にして、_Default Logging バケットへのログのルーティングを停止できます。

いずれかの列名をクリックすると、昇順または降順でデータを並べ替えることができます。

API

  • Cloud プロジェクトのシンクを表示するには、projects.sinks.list を呼び出します。

  • シンクの詳細を表示するには、projects.sinks.get を呼び出します。

  • シンクを更新するには、projects.sink.update を呼び出します。

    シンクのエクスポート先、フィルタ、説明を更新できます。シンクを無効または再度有効にすることもできます。

  • シンクを無効にするには、projects.sink.update を呼び出して、disabled プロパティを true に設定します。

    シンクを再度有効にするには、projects.sink.update を呼び出して、disabled プロパティを false に設定します。

  • シンクを削除するには、projects.sinks.delete を呼び出します。

    シンクを削除すると、ログエントリがシンクからルーティングされなくなります。

    Logging API を使用してシンクを管理する上記のメソッドの詳細については、LogSink リファレンスをご覧ください。

gcloud

  • Cloud プロジェクトのシンクのリストを表示するには、gcloud logging sinks listコマンド。Logging API メソッドに対応しています。projects.sinks.list: 

    gcloud logging sinks list
    

    集約シンクのリストを表示するには、該当するフラグを使用して、シンクを含むリソースを指定します。たとえば、組織レベルでシンクを作成した場合は、--organization=ORGANIZATION_ID フラグを使用して組織のシンクを一覧表示します。

  • シンクを記述するには、Logging API の projects.sinks.get メソッドに対応する gcloud logging sinks describe コマンドを使用します。

    gcloud logging sinks describe SINK_NAME
    
  • シンクを更新するには、API メソッドの projects.sink.update に対応する gcloud logging sinks update コマンドを使用します。

    シンクを更新して、エクスポート先、フィルタ、説明を変更したり、シンクを無効または再度有効にしたりできます。

    gcloud logging sinks update SINK_NAME  NEW_DESTINATION  --log-filter=NEW_FILTER

    これらの部分が変更されない場合は、NEW_DESTINATION または --log-filter を省略します。

    たとえば、my-project-sink という名前のシンクのエクスポート先を my-second-gcs-bucket という名前の新しい Cloud Storage バケットのエクスポート先に更新するには、コマンドを次のようにします。

    gcloud logging sinks update  my-project-sink  storage.googleapis.com/my-second-gcs-bucket
    
  • シンクを無効にするには、API メソッド projects.sink.update に対応する gcloud logging sinks update コマンドを使用し、--disabled フラグを含めます。

    gcloud logging sinks update _Default  --disabled
    

    シンクを再度有効にするには、gcloud logging sinks update コマンドを使用し、--disabled フラグを削除して --no-disabled フラグを含めます。

    gcloud logging sinks update _Default  --no-disabled
    
  • シンクを削除するには、API メソッド projects.sinks.delete に対応する gcloud logging sinks delete コマンドを使用します。

    gcloud logging sinks delete SINK_NAME
    

    シンクを削除すると、ログエントリがシンクからルーティングされなくなります。

    gcloud コマンドライン ツールを使用したシンクの管理の詳細については、gcloud logging sinks リファレンスをご覧ください。

ログの取り込みを停止する

Cloud プロジェクトごとに、Logging によって自動的に 2 つのログバケット_Required_Default)が作成されます。Logging は、対応する名前のバケットにログをルーティングする 2 つのログシンク(_Required_Default)を自動的に作成します。

_Required シンクを無効にすることはできません。取り込み料金とストレージ料金は、_Required ログバケットに保存されたログデータには適用されません。_Default シンクを無効にすると、_Default バケットへのログの取り込みを停止できます。ユーザー定義のシンクを無効にすることもできます。

_Default バケットにログを送信するすべてのシンクを無効にして _Default バケットのログ取り込みを停止すると、Cloud プロジェクトで _Default バケットに対する新しい Cloud Logging 取り込み料金は発生しません。_Default バケットは、以前に _Default バケットに取り込まれたすべてのログがバケットの保持期間を満了したときに空になります。

ログを _Default バケットにルーティングする Cloud プロジェクト シンクを無効にするには、次の手順に従います。

Console

  1. ログルーターに移動

    [ログルーター] に移動

  2. ログを _Default バケットにルーティングするすべてのシンクを見つけるには、エクスポート先でシンクをフィルタし、「_Default」と入力します。

    デフォルトのバケットにログをルーティングするすべてのシンクを検索する

  3. 各シンクで、[メニュー] を選択し、[シンクを無効にする] を選択します。

シンクは無効になり、Cloud プロジェクト シンクは _Default バケットにログをルーティングしなくなりました。

無効になっているシンクを再度有効にして、シンクのエクスポート先へのログのルーティングを再開するには、次の操作を行います。

  1. [ログルーター] ページに移動します。

    [ログルーター] に移動

  2. ログを _Default バケットにルーティングするように構成済みの無効なシンクをすべて検索するには、シンクをエクスポート先でフィルタしてから、「_Default」と入力します。

  3. 各シンクで、[メニュー] を選択し、[シンクを有効にする] を選択します。

API

  1. Cloud プロジェクトのシンクを表示するには、Logging API メソッド projects.sinks.list を呼び出します。

    _Default バケットにルーティングされているシンクを特定します。

  2. たとえば、_Default シンクを無効にするには、projects.sink.update を呼び出し、disabled プロパティを true に設定します。

これで _Default シンクが無効になり、_Default バケットにログがルーティングされなくなりました。

_Default バケットにルーティングしている Cloud プロジェクト内の他のシンクを無効にするには、上記の手順を繰り返します。

シンクを再度有効にするには、projects.sink.update を呼び出して、disabled プロパティを false に設定します。

gcloud

  1. Cloud プロジェクトのシンクのリストを表示するには、gcloud logging sinks listコマンド。Logging API メソッドに対応しています。projects.sinks.list: 

    gcloud logging sinks list
    
  2. _Default バケットにルーティングされているシンクを特定します。宛先の名前など、シンクを記述するには、Logging API のメソッド projects.sinks.get に対応する gcloud logging sinks describe を使用します。

    gcloud logging sinks describe SINK_NAME
    
  3. たとえば、_Default シンクを無効にするには、gcloud logging sinks update コマンドを使用し、--disabled フラグを含めます。

    gcloud logging sinks update _Default  --disabled
    

これで _Default シンクが無効になり、_Default バケットにログがルーティングされなくなりました。

_Default バケットにルーティングしている Cloud プロジェクト内の他のシンクを無効にするには、上記の手順を繰り返します。

シンクを再度有効にするには、gcloud logging sinks update コマンドを使用し、--disabled フラグを削除して --no-disabled フラグを含めます。

gcloud logging sinks update _Default  --no-disabled

エクスポート先の権限を設定する

このセクションでは、シンクのエクスポート先にログを書き込むための Identity and Access Management 権限を Logging に付与する方法について説明します。Logging のロールと権限のリストについては、アクセス制御をご覧ください。

シンクを作成すると、Logging によって一意の書き込み ID と呼ばれるシンクのサービス アカウントが新規に作成されます。シンクのエクスポート先では、このサービス アカウントにログエントリの書き込みを許可する必要があります。このサービス アカウントは、Cloud Logging によって所有および管理されているため、直接管理できません。シンクが削除されると、このサービス アカウントは削除されます。

シンクを使用して、同じ Cloud プロジェクトの Logging バケット間でログをルーティングする場合、新しいサービス アカウントは作成されません。シンクは一意の書き込み ID なしで動作します。シンクを使用して別の Cloud プロジェクトの Logging バケット間でログをルーティングする場合は、新しいサービス アカウントが作成されます。

シンクをエクスポート先にルーティングするための権限を設定するには、次の手順を行います。

Console

  1. 新しいシンクからシンクの書き込み ID(メールアドレス)を取得します。[ログルーター] ページに移動し、[メニュー] > [シンクの詳細を表示] を選択します。書き込み ID が [シンクの詳細] パネルに表示されます。

  2. エクスポート先へのオーナー アクセス権がある場合は、次の方法でエクスポート先にサービス アカウントを追加します。

    • Cloud Storage のエクスポート先の場合は、シンクの書き込み ID をバケットに追加し、ストレージのオブジェクト作成者の役割を付与します。
    • BigQuery のエクスポート先の場合は、シンクの書き込み ID をデータセットに追加し、BigQuery データ編集者の役割を付与します。
    • Cloud Pub/Sub の場合は、シンクの書き込み ID をトピックに追加し、Pub/Sub パブリッシャーの役割を付与します。
    • 異なる Cloud プロジェクトの Logging バケットのエクスポート先の場合は、シンクの書き込み ID をエクスポート先のログバケットに追加し、roles/logging.bucketWriter 権限を付与します。

    シンク先へのオーナー アクセス権がない場合は、書き込み ID のサービス アカウント名を、その権限を持つ担当者に送信します。送信された担当者は、前のステップの指示に従って、書き込み ID をエクスポート先に追加する必要があります。

API

  1. API メソッド projects.sinks.create または projects.sinks.update を呼び出してシンクを作成または変更します。

    uniqueWriterIdentitytrue に設定します。シンクを更新するときに、共有ライターから一意のライターに変更することができます。既存のシンクがすでに一意のライターを使用している場合、更新されたシンクは同じライターを使用します。

    メソッドは、新しい書き込み ID を含む新しいシンクを返します。

  2. エクスポート先へのオーナー アクセス権がある場合は、次の方法でエクスポート先にサービス アカウントを追加します。

    • Cloud Storage のエクスポート先の場合は、シンクの書き込み ID をバケットに追加し、ストレージのオブジェクト作成者の役割を付与します。
    • BigQuery のエクスポート先の場合は、シンクの書き込み ID をデータセットに追加し、BigQuery データ編集者の役割を付与します。
    • Cloud Pub/Sub の場合は、シンクの書き込み ID をトピックに追加し、Pub/Sub パブリッシャーの役割を付与します。
    • 異なる Cloud プロジェクトの Logging バケット宛先の場合は、シンクの書き込み ID をエクスポート先のログバケットに追加し、roles/logging.bucketWriter 権限を付与します。

    シンク先へのオーナー アクセス権がない場合は、書き込み ID のサービス アカウント名を、その権限を持つ担当者に送信します。送信された担当者は、前のステップの指示に従って、書き込み ID をエクスポート先に追加する必要があります。

gcloud

  1. シンク内の writerIdentity フィールドからサービス アカウントを取得します。

    gcloud logging sinks describe SINK_NAME
    

    サービス アカウントは次のようになります。

    serviceAccount:p123456789012-12345@gcp-sa-logging.iam.gserviceaccount.com
    
  2. エクスポート先へのオーナー アクセス権がある場合は、次の方法でエクスポート先にサービス アカウントを追加します。

    • Cloud Storage のエクスポート先の場合は、シンクの書き込み ID をバケットに追加し、ストレージのオブジェクト作成者の役割を付与します。
    • BigQuery のエクスポート先の場合は、シンクの書き込み ID をデータセットに追加し、BigQuery データ編集者の役割を付与します。
    • Cloud Pub/Sub の場合は、シンクの書き込み ID をトピックに追加し、Pub/Sub パブリッシャーの役割を付与します。
    • 異なる Cloud プロジェクトの Logging バケット宛先の場合は、シンクの書き込み ID をエクスポート先のログバケットに追加し、roles/logging.bucketWriter 権限を付与します。

    シンク先へのオーナー アクセス権がない場合は、書き込み ID のサービス アカウント名を、その権限を持つ担当者に送信します。送信された担当者は、前のステップの指示に従って、書き込み ID をエクスポート先に追加する必要があります。

    たとえば、異なる Cloud プロジェクトの Logging バケット間でログをルーティングする場合は、次のように roles/logging.bucketWriter をサービス アカウントに追加します。

    1. 宛先プロジェクトの Cloud Identity and Access Management ポリシーを取得し、JSON 形式でローカル ファイルに書き込みます。

      gcloud projects get-iam-policy DESTINATION_PROJECT_ID --format json > output.json
      
    2. サービス アカウントが、作成した Cloud Logging バケットにのみ書き込みを許可する IAM 条件を追加します。次に例を示します。

      {
      "bindings": [
       {
         "members": [
           "user:username@gmail.com"
         ],
         "role": "roles/owner"
       },
       {
         "members": [
           "[SERVICE_ACCOUNT]"
         ],
         "role": "roles/logging.bucketWriter",
         "condition": {
             "title": "Bucket writer condition example",
             "description": "Grants logging.bucketWriter role to service account [SERVICE_ACCOUNT] used by log sink [SINK_NAME]",
             "expression":
               "resource.name.endsWith(\'locations/global/buckets/BUCKET_ID\')"
         }
       }
      ],
      "etag": "BwWd_6eERR4=",
      "version": 3
      }
    3. IAM ポリシーを更新します。

      gcloud projects set-iam-policy DESTINATION_PROJECT_ID output.json
      

コードサンプル

クライアント ライブラリのコードを使用して、選択した言語のシンクを構成する方法については、Logging クライアント ライブラリ: ログシンクをご覧ください。

フィルタの例

次に、シンクを作成するときに特に役立つフィルタの例をいくつか示します。

包含フィルタと除外フィルタの作成時に役立つその他の例については、サンプルクエリをご覧ください。

_Default シンクフィルタを復元する

_Default シンクのフィルタを編集した場合は、デフォルトのフィルタを復元することをおすすめします。それには、次の包含フィルタを入力します。

  NOT LOG_ID("cloudaudit.googleapis.com/activity") AND NOT \
  LOG_ID("externalaudit.googleapis.com/activity") AND NOT \
  LOG_ID("cloudaudit.googleapis.com/system_event") AND NOT \
  LOG_ID("externalaudit.googleapis.com/system_event") AND NOT \
  LOG_ID("cloudaudit.googleapis.com/access_transparency") AND NOT \
  LOG_ID("externalaudit.googleapis.com/access_transparency")

Google Kubernetes Engine コンテナと Pod のログを除外する

Google Kubernetes Engine コンテナと GKE システム namespaces の Pod のログを除外するには、次のフィルタを使用します。

resource.type = ("k8s_container" OR "k8s_pod")
resource.labels.namespace_name = (
"cnrm-system" OR
"config-management-system" OR
"gatekeeper-system" OR
"gke-connect" OR
"gke-system" OR
"istio-system" OR
"knative-serving" OR
"monitoring-system" OR
"kube-system")

GKE システム logNames の Google Kubernetes Engine のノードログを除外するには、次のフィルタを使用します。

resource.type = "k8s_node"
logName:( "logs/container-runtime" OR
"logs/docker" OR
"logs/kube-container-runtime-monitor" OR
"logs/kube-logrotate" OR
"logs/kube-node-configuration" OR
"logs/kube-node-installation" OR
"logs/kubelet" OR
"logs/kubelet-monitor" OR
"logs/node-journal" OR
"logs/node-problem-detector")

Cloud Logging に取り込まれた Google Kubernetes Engine のノードPodコンテナのログの量は、Metrics Explorer の Cloud Monitoring を使用して表示できます。

サポートに不要な Dataflow ログを除外する

サポート性を必要としない Dataflow ログを除外するには、次のフィルタを使用します。

resource.type="dataflow_step"
labels."dataflow.googleapis.com/log_type"!="system" AND labels."dataflow.googleapis.com/log_type"!="supportability"

Cloud Logging に取り込まれた Dataflow ログデータの量を表示するには、Cloud Monitoring の Metrics Explorer を使用します。

サポート性

Cloud Logging には、ログを取り込み対象から除外する機能が用意されていますが、サポートに有用なログの保持を検討することをおすすめします。これらのログを使用すると、アプリケーションの問題についてすばやくトラブルシューティングを行い特定できます。

たとえば、GKE システムログはクラスタ内で発生するイベントに対して生成されるため、GKE アプリケーションとクラスタのトラブルシューティングに役立ちます。このログは、アプリケーション コードまたは基盤となる GKE クラスタがアプリケーション エラーを引き起こしているかどうかを判断するのに役立ちます。GKE システムログには、Kubernetes API サーバー コンポーネントによって生成された Kubernetes 監査ロギングも含まれます。これには、kubectl コマンドと Kubernetes イベントを使用して行われた変更が含まれます。

Dataflow の場合は、少なくともシステムログ(labels."dataflow.googleapis.com/log_type"="system")とサポートログ(labels."dataflow.googleapis.com/log_type"="supportability")を取り込むことをおすすめします。これらのログは、デベロッパーが Dataflow パイプラインを監視し、トラブルシューティングを実施するのに不可欠であり、ユーザーが Dataflow ジョブの詳細ページを使用してジョブログを表示できない場合があります。

次のステップ