Dataflow ログの取り込みを制御する

除外フィルタを使用すると、Cloud Logging によって取り込まれる Dataflow ログの量を制御しながら、デバッグで詳細ログを使用できます。除外フィルタを使用すると、一致するログエントリの Cloud Logging による取り込みや、シンクの宛先への転送を防ぐことができます。除外フィルタは、Logging のクエリ言語を使用して作成します。Logging のクエリ言語を使用すると、選択した Google Cloud リソース内のすべてのログエントリのサブセット(プロジェクトやフォルダなど)を指定できます。

除外フィルタを使用すると、Dataflow ログの取り込みで発生する Cloud Logging の費用を削減できます。Cloud Logging のログ取り込み料金については、Cloud Logging の料金概要をご覧ください。除外フィルタの仕組みと制限の詳細については、Cloud Logging ドキュメントの除外フィルタをご覧ください。

Dataflow ジョブは複数のログタイプを出力します。このページでは、Dataflow ジョブのログとワーカーログをフィルタする方法について説明します。

ログ除外フィルタを作成する

この例では、_Default Cloud Logging シンクに除外フィルタを作成します。このフィルタでは、重大度が DEFAULTDEBUGINFONOTICE のすべての Dataflow ログが Cloud Logging に取り込まれなくなります。重大度が WARNINGERRORCRITICALALERTEMERGENCY のログは引き続きキャプチャされます。サポートされているログレベルの詳細については、LogSeverity をご覧ください。

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  5. Google Cloud プロジェクトで課金が有効になっていることを確認します

権限

始める前に、次のことを確認してください。

  • ログ エクスプローラにログを表示する Google Cloud プロジェクトを所有している。

  • ログの転送元となる Google Cloud プロジェクトについて、次のいずれかの IAM ロールを付与されている。

    • オーナーroles/owner
    • Logging 管理者roles/logging.admin
    • ログ構成書き込みroles/logging.configWriter

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

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

    Google Cloud CLI、Google Cloud コンソール、Google Cloud APIs のいずれかを使用して、シンクの前にルーティングする宛先を作成する必要があります。宛先は、どの組織のどの Google Cloud プロジェクトにも作成できます。宛先を作成する前に、シンクのサービス アカウントに宛先への書き込み権限があることを確認してください。

除外フィルタを追加する

次の手順では、Cloud Logging の除外フィルタを Dataflow ログに追加する方法を示します。この除外フィルタでは、Dataflow ジョブ名が文字列 debug で終わっていないジョブから、重大度が DEFAULTDEBUGINFONOTICE のすべての Dataflow ログエントリを選択します。フィルタは、これらのログを Default Cloud Logging バケットへの取り込みから除外します。

  1. Google Cloud コンソールで、[ログルーター] ページに移動します。

    ログルーターに移動

  2. _Default シンクのある行を見つけて、 その他の操作オプションを開き、[シンクを編集] をクリックします。

  3. [シンクに含めないログの選択] で、[除外フィルタの作成] の [除外設定を追加] をクリックします。

  4. 除外フィルタの名前を入力します。

  5. [除外フィルタの作成] セクションで、次のテキストをボックスに貼り付けます。

    resource.type="dataflow_step" AND
    labels."dataflow.googleapis.com/job_name"!~".*debug" AND
    severity=(DEFAULT OR DEBUG OR INFO OR NOTICE)
    
    • 最初の行は、Dataflow サービスによって生成されたすべてのログエントリを選択します。
    • 2 行目は、job_name フィールドが文字列 debug で終わらないすべてのログエントリを選択します。
    • 3 行目は、重大度が DEFAULTDEBUGINFO、または NOTICE のすべてのログエントリを選択します。
  6. [シンクを更新] をクリックします。

除外フィルタをテストする

サンプルの Dataflow ジョブを実行してログを表示し、フィルタが正しく機能していることを確認します。

ジョブの実行が開始されたら、次の手順でジョブのログを表示します。

  1. Google Cloud コンソールで、Dataflow の [ジョブ] ページに移動します。

    [ジョブ] に移動

    Dataflow ジョブのリストとそれぞれのステータスが表示されます。

  2. ジョブを選択します。

  3. [ジョブの詳細] ページの [ログ] パネルで、 [表示] をクリックします。

  4. [ログ] パネルにログが表示されていないことと、DEFAULTDEBUGINFO、または NOTICE のログが [ワーカーログ] パネルに表示されていないことを確認します。

除外フィルタをバイパスする

Dataflow ジョブ名(job_name)は、生成された Dataflow ログのキャプチャが必要なシナリオにバイパス メカニズムを提供するために使用されます。このバイパスは、失敗したジョブを再実行してすべてのログ情報をキャプチャするために使用できます。

このシナリオで作成するフィルタは、job_name フィールドが文字列 debug で終わる場合に、すべてのログエントリを保持します。除外フィルタを回避し、Dataflow ジョブのすべてのログを表示する場合は、ジョブ名に debug を追加します。たとえば、除外フィルタをバイパスするには、ジョブ名 dataflow-job-debug を使用します。

ログの数を比較する

除外フィルタの有無にかかわらず、取り込まれるログの量を比較するには、ジョブ名に debug が付いているジョブと付いていないジョブを実行します。システム定義のログベースの指標であるログバイト数で、取り込みデータを比較します。取り込みデータを表示する方法の詳細については、Metrics Explorer で取り込みデータを表示するをご覧ください。

外部の宛先を作成する

除外フィルタを作成したら、追加の Cloud Logging シンクを作成できます。このシンクを使用して、Dataflow ログ全体を BigQuery、Pub/Sub、Splunk など、サポートされている外部の宛先にリダイレクトできます。

このシナリオでは、外部ログはログ エクスプローラに保存されませんが、外部の宛先で使用できます。外部の宛先を使用すると、ログ エクスプローラにログを保存する場合に発生する費用をより細かく制御できます。

Cloud Logging によるログの転送方法を制御する手順については、シンクの構成と管理をご覧ください。すべての Dataflow ログを外部の宛先でキャプチャするには、[シンクに含めるログの選択] パネルの [包含フィルタの作成] フィールドに、次のようなフィルタ式を入力します。

resource.type="dataflow_step"

Cloud Logging からサポートされている宛先に転送されたログエントリを確認するには、シンクのエクスポート先のログを表示するをご覧ください。

重大度で Dataflow ログメッセージを追跡する

除外フィルタは、ユーザー定義のログベースの指標には適用されません。これらの指標は、特定のフィルタに一致するログエントリの数をカウントするか、一致するログエントリ内の特定の値を追跡します。重大度に基づいて Dataflow ログメッセージの数を追跡するには、Dataflow ログにログベースの指標を作成します。ログ メッセージが取り込みから除外されていても、ログが追跡されます。

ユーザー定義のログベースの指標に対しては料金が発生します。料金の詳細については、課金対象の指標をご覧ください。

ユーザー定義のログベースの指標を構成するには、カウンタ指標の作成をご覧ください。Dataflow ログを追跡するには、[フィルタの選択] セクションの [フィルタの作成] ボックスに、次のテキストを入力します。

resource.type="dataflow_step"