ログの除外

このページでは、Cloud Console と Logging API を使用して、取り込まれたログからログを除外する方法について説明します。

Cloud Logging では、ログバケットにログを転送するログシンクの除外フィルタを追加して、ログバケットからログを除外できます。Logging のクエリ言語を使用して、ログバケットから除外するログを定義するフィルタを作成します。

[ログストレージ] ページでは、プロジェクトのログの使用量を追跡します。ログルーターにはログの取り込みをすべて無効にするツールも不要なログエントリを除外(破棄)するツールもあります。このため毎月の割り当ての中でログへの課金を最小限にできます。除外されたログエントリの処理方法の詳細については、このページの除外の仕組みをご覧ください。

Cloud Logging の費用の詳細については、料金をご覧ください。Cloud Logging から Virtual Private Cloud フローログを送信してから除外した場合は、VPC フローログの生成料金が適用されることにご注意ください。

ログ容量の追跡

プロジェクトのログ量を追跡するには、Cloud Logging コンソールの [ログストレージ] ページに移動します。

ログストレージに移動

ページの最上部に、プロジェクトで受信したログの統計情報の概要が表示されます。

ログストレージの使用量の統計情報の概要

次の統計情報が報告されます。

  • [今月の取り込まれたログ容量]: 今月の最初の日付以降にプロジェクトで受信したログの量。

  • [先月の取り込まれたログ容量]: 先月のプロジェクトで受信したログの量。

  • [予想される取り込みログ容量]: 現在の使用量に基づいて、プロジェクトで今月末までに受信すると推定されるログの量。

ログ容量には、特定の監査ログ(すべての管理アクティビティ監査ログとすべてのシステム イベント監査ログ)は含まれません。このログは無料であり、除外も無効化もできません。

除外の仕組み

次の図は、除外するログエントリが Cloud Logging でどのように処理されるかを示しています。

Cloud Logging がログエントリをルーティングする方法を示す図。

Logging で除外されたログエントリには、次の条件が適用されます。

  • 除外されたログエントリは、プロジェクトに指定された Logging の割り当てにカウントされません。詳細については、Logging の料金をご覧ください。

  • 除外されたログエントリはログ エクスプローラに表示されません。また、Error Reporting や Cloud デバッガでは使用できません。

  • シンクのエクスポート先を含むログシンクを使用して、Cloud Logging の外部にログエントリをエクスポートできます。同じログを取り込みから除外することもできます。詳細については、ルーティングとストレージの概要: シンクをご覧ください。

  • 無効にできない監査ログも除外できません。ただし、この種類の監査ログは無料です。

除外クエリを作成すると、除外(破棄)するログエントリを制御できます。たとえば、すべての VM インスタンスではなく、単一の VM インスタンスからのログエントリを除外できます。

除外の上限

1 つのプロジェクトに最大 50 個の除外フィルタを含めることができます。

除外のタイミング

ログは、Logging API によって受信された後に除外されます。したがって、ログを除外しても、entries.write API 呼び出しの回数は減りません

除外フィルタの作成

除外フィルタは、新しいログシンクまたは既存のシンクに対して作成できます。

新しいシンクの除外フィルタの作成

ログルーターを使用して新しいログシンクの除外フィルタを作成するには、次のとおりにします。

  1. シンクの作成の手順に従います。

  2. [シンクに含めないログの選択(任意)] ステップでは、ログを除外する除外フィルタを作成できます。

  3. [除外設定を追加] をクリックします。

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

  5. [除外フィルタの作成] セクションで、除外するログエントリに一致するフィルタ式を入力します。Logging のクエリ言語の概要については、Logging クエリ言語をご覧ください。sample 関数を使用して、ログエントリの一部を選択することもできます。

  6. 必要に応じてフィルタを追加するには、[除外設定を追加] をクリックします。

  7. 完了したら、[シンクの作成] をクリックします。

既存のシンクの除外フィルタの作成

ログルーターを使用して既存のログシンクの除外フィルタを作成するには、次のとおりにします。

  1. Logging メニューから [ログルーター] を選択します。

    [ログルーター] に移動

  2. 除外フィルタを追加するシンクで、その他 をクリックします。

  3. [シンクを編集] をクリックします。

  4. [シンクに含めないログの選択(任意)] セクションで、ログを除外する除外フィルタを作成します。

  5. [除外設定を追加] をクリックします。

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

  7. [除外フィルタの作成] セクションで、除外するログエントリに一致するフィルタ式を入力します。Logging のクエリ言語の概要については、Logging クエリ言語をご覧ください。sample 関数を使用して、ログエントリの一部を選択することもできます。

  8. 必要に応じてフィルタを追加するには、[除外設定を追加] をクリックします。

  9. 完了したら、[シンクを更新] をクリックします。

フィルタの作成時に、次のいずれかの状況に遭遇することがあります。

  • _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 の除外フィルタの例

次のクエリを使用して、GKE システム namespaces の Google Kubernetes Engine コンテナと 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 Server コンポーネントによって生成された Kubernetes Audit Logging も含まれます。これには、kubectl コマンドと Kubernetes イベントを使用して行われた変更が含まれます。

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

除外フィルタの表示

現在の除外フィルタを表示するには、次のとおりにします。

  1. Logging メニューから [ログルーター] を選択します。

    [ログルーター] に移動

  2. 除外フィルタを表示するシンクのその他アイコン をクリックします。

  3. [シンクの詳細を表示する] を選択します。

  4. 除外フィルタを含むシンクの詳細がパネルに表示されます。この例では、_Default シンクの詳細が表示されます。

    シンクの詳細パネルの画像

除外の編集

既存の除外フィルタを編集して、除外するログエントリを増やしたり減らしたりできます。

  1. Logging メニューから [ログルーター] を選択します。

    [ログルーター] に移動

  2. 除外フィルタを表示するシンクのその他アイコン をクリックします。

  3. [シンクを編集] をクリックします。

  4. [除外フィルタの作成] セクションで、フィルタ式を編集して、除外するログエントリに一致させます。

  5. 必要に応じてフィルタを追加するには、[除外設定を追加] をクリックします。

  6. 完了したら、[シンクを更新] をクリックします。

除外の削除

除外フィルタを編集、無効化、削除するには、除外の編集ガイドに従って、そのシンクの除外を削除します。

API での除外

Logging API で除外フィルタを作成するには、projects.exclusions.create メソッドを使用します。

除外フィルタを表示、削除、更新するメソッドや、組織、請求先アカウント、フォルダによって受信されたログの除外を管理するメソッドもあります。

除外に役立つログクエリの例については、サンプルクエリをご覧ください。

API でのサンプリングされた除外

一致するログエントリの 100% 未満を除外するには、ログクエリで sample 関数を使用します。

除外するログのエクスポート

ログエントリを除外する前に Cloud Storage、BigQuery、Pub/Sub にエクスポートすれば、除外するログエントリは完全に失われことはありません。

除外とエクスポートを開始する手順は次のとおりです。

  1. 除外してエクスポートするログエントリに一致するクエリを作成します。

    ヒント: デフォルトで有効になっている監査ログと一致しないようにクエリを作成します。こうした監査ログエントリとの一致は除外には影響しませんが、エクスポートするログエントリが増えることになります。

  2. ログクエリを使用してエクスポート シンクを作成し、一致するログエントリのエクスポートを開始します。

  3. ログクエリを使用して除外フィルタを作成し、一致するログエントリの除外を開始します。

除外とエクスポートを停止するには、除外フィルタを無効にしてから、エクスポート シンクを停止します。

ログをエクスポートする方法については、ルーティングとストレージの概要: シンクをご覧ください。

エクスポートの料金

エクスポートされたログには Cloud Logging の料金はかかりませんが、エクスポート先料金が適用されることがあります。詳しくは、該当するプロダクトの料金のページをご覧ください。

Cloud Logging から Virtual Private Cloud フローログを送信して除外した場合は、エクスポート先料金に加え VPC フローログの生成料金が適用されることにもご注意ください。

トラブルシューティング

このセクションでは、ログの除外に関連する既知の問題について説明します。

除外フィルタが機能しないのはなぜですか?

ログ エクスプローラで、除外したログを表示できることがあります。次のすべての条件が満たされている場合、これらのログは引き続き表示されます。

  • ログが生成された Google Cloud プロジェクトでクエリを実行している。

  • 除外されたログが別の Cloud プロジェクトのログバケットに送信された。

  • ログが送信されたログバケット内のビューへのアクセス権がある。

この場合、デフォルトでこれらのログを表示できます。

ログ エクスプローラにこれらのログが表示されないようにするには、ソースの Cloud プロジェクトまたはバケットのみに検索範囲を絞り込みます。