実行をモニタリングする

このドキュメントでは、次の方法について説明します。

始める前に

実行ログをモニタリングするには、次の操作を行います。

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

    Dataform に移動

  2. リポジトリを作成または選択します。

  3. 開発ワークスペースを作成または選択します。

  4. 少なくとも 1 回実行をトリガーします。

必要なロール

実行ログの表示に必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

ログビューア(roles/logging.viewer)IAM ロールは、Cloud Logging のすべての機能に対する読み取り専用権限を付与します。Logging データに適用される Identity and Access Management の権限とロールの詳細については、IAM を使用したアクセス制御をご覧ください。

ログベースのアラートを作成して管理するには、IAM ロールに、ログベースのアラート ポリシーの作成と使用に必要なロールで説明されている権限が含まれていることを確認します。

実行ログをモニタリングする

このセクションでは、Dataform で実行ログを表示する方法について説明します。

リポジトリでトリガーされたすべての実行のログと、過去 24 時間以内にワークスペースでトリガーされた実行のログを表示できます。

リポジトリの実行ログを検査する

リポジトリでトリガーされたすべての実行のログを表示する手順は次のとおりです。

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

    Dataform に移動

  2. リポジトリに移動します。

  3. [ワークフローの実行ログ] をクリックします。

  4. 実行の詳細を表示するには、該当する実行をクリックします。

  5. 実行内のアクションの詳細を表示するには、[詳細を表示] をクリックします。

ワークスペースの実行ログを検査する

過去 24 時間以内にワークスペースでトリガーされた最新の実行ログを 1,000 件まで表示する手順は次のとおりです。

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

    Dataform に移動

  2. リポジトリに移動し、ワークスペースを選択します。

  3. ワークスペースで、[実行] をクリックします。

  4. 実行の詳細を表示するには、該当する実行をクリックします。

  5. 実行内のアクションの詳細を表示するには、[詳細を表示] をクリックします。

Dataform の Logging ログを表示する

このセクションでは、Dataform ワークフローの呼び出しの Cloud Logging ログを表示する方法について説明します。

Dataform ワークフローの呼び出しは、Logging を使用してロギングされます。Dataform ワークフローの呼び出しでは、ロギングが自動的に有効になります。このため、Logging の料金が発生する場合があります。詳細については、Dataform の料金をご覧ください。

ログを表示

ログ エクスプローラで Logging ログをフィルタリングする方法については、ログ エクスプローラを使用してログを表示するをご覧ください。

Dataform ログは Dataform リポジトリによってインデックスに登録されます。

ログ形式

Dataform は、次の形式でワークフロー呼び出しログ メッセージを送信します。

{
  "insertId": "14ip1tza5",
  "jsonPayload": {
    "terminalState": "SUCCEEDED",
    "workflowInvocationId": "1678383230-ac4ed48c-eb70-4555-b2b0-cda54d13edfa",
    "@type": "type.googleapis.com/google.cloud.dataform.logging.v1.WorkflowInvocationCompletionLogEntry"
  },
  "resource": {
    "type": "dataform.googleapis.com/Repository",
    "labels": {
      "repository_id": "repository-name-example",
      "resource_container": "PROJECT_ID",
      "location": "us-central1"
    }
  },
  "timestamp": "2023-03-09T17:34:06.965981805Z",
  "severity": "INFO",
  "logName": "projects/project-name-example/logs/dataform.googleapis.com%2Fworkflow_invocation_completion",
  "receiveTimestamp": "2023-03-09T17:34:07.362371980Z"
}

ログの内容

Dataform ログエントリには、ワークフロー呼び出しのモニタリングとデバッグに役立つ情報が含まれています。

ログエントリには次のタイプの情報が含まれています。

  • receiveTimestamp
  • release_config_id
  • repository_id
  • resource_container
  • workflow_invocation_id
  • workflow_config_id
  • severity: INFO、WARNING、ERROR のいずれかを設定できます。
  • terminalState: SUCCEEDED、CANCELED、FAILED のいずれかを設定できます。
  • timestamp
  • @type

Dataform サービスログには、ワークフロー呼び出し完了ログなどの高レベルの呼び出しイベントが記録されます。ただし、これらのサービスログには、個々の BigQuery ジョブ ID や、テーブルレベルのきめ細かいアクションの実行は含まれません。ワークフロー呼び出しの詳細なアクションレベルの実行の詳細と、対応する BigQuery ジョブ ID を取得するには、BigQuery ジョブをワークフロー呼び出しに関連付けるをご覧ください。

Cloud Monitoring で指標とアラートを構成する

Monitoring を使用してログの傾向を確認し、記述した条件の発生時に通知できます。

Monitoring にログのデータを提供するため、ロギングには次の機能があります。

  • ログベースの指標で、次のように使用できます。
    • 経時的な変化を通知するアラート ポリシーを作成する。
    • 経時的な変化を表すグラフを作成する。
  • ログに特定のイベントが表示されるたびに通知する、ログベースのアラート。

ログベースの指標とログベースのアラートの詳細については、ログのモニタリングをご覧ください。

Dataform ワークフロー呼び出しに対するログベースのアラートを構成する方法については、失敗したワークフロー呼び出しに対するアラートを構成するをご覧ください。

BigQuery ジョブをワークフロー呼び出しに関連付ける

dataform.googleapis.com/Repository リソースタイプの Dataform サービスログには、ワークフロー呼び出し完了ログなどの高レベルのワークフロー呼び出しイベントが記録されます。ただし、これらのサービスログには、テーブルレベルのきめ細かいアクションの実行や、特定の BigQuery ジョブ ID は含まれません。

Dataform は、テーブル、ビュー、アサーションの作成や更新などのアクションを実行するときに、BigQuery でジョブを送信し、各ジョブにラベルを自動的に追加します。また、workflowInvocations.query メソッドを呼び出して bigqueryAction.jobId フィールドを調べることで、各アクションの BigQuery ジョブ ID を Dataform API から直接取得することもできます。

次の表に、Dataform が BigQuery ジョブに適用するキーラベルを示します。

ラベルキー 説明
dataform_workflow_execution_id サニタイズされた Dataform ワークフロー呼び出しの ID。
dataform_repository_id Dataform リポジトリのサニタイズされた ID。
dataform_workflow_execution_action_id_database アクションのターゲット プロジェクト(データベース)。
dataform_workflow_execution_action_id_schema アクションのターゲット データセット(スキーマ)。
dataform_workflow_execution_action_id_name アクションのターゲット テーブル、ビュー、またはアサーションの名前。

BigQuery ジョブとアクションレベルの実行の詳細をワークフロー呼び出しに関連付けるには、次の操作を行います。

  1. 実行のワークフロー呼び出し ID を取得します。ログ エクスプローラで ID を検索するには、次のいずれかの Dataform ログタイプをクエリします。

    • workflow_invocation_completion ログ(デフォルトで有効): ログエントリから jsonPayload.workflowInvocationId フィールドの値をコピーします。

      resource.type="dataform.googleapis.com/Repository"
      resource.labels.repository_id="REPOSITORY_ID"
      log_id("dataform.googleapis.com/workflow_invocation_completion")
      
    • CreateWorkflowInvocation データアクセス監査ログ(DATA_WRITE オペレーションでデータアクセス監査ログが有効になっている場合): protoPayload.resourceName フィールドの末尾にある WORKFLOW_INVOCATION_ID セグメントをコピーします。

      resource.type="dataform.googleapis.com/Repository"
      resource.labels.repository_id="REPOSITORY_ID"
      log_id("cloudaudit.googleapis.com/data_access")
      protoPayload.methodName:"Dataform.CreateWorkflowInvocation"
      

    REPOSITORY_ID は、Dataform リポジトリの ID に置き換えます。

  2. ログ エクスプローラで BigQuery 監査ログをクエリするか、BigQuery の INFORMATION_SCHEMA.JOBS ビューをクエリして、関連する BigQuery ジョブを見つけるには、次のいずれかのオプションを選択します。

    ログ エクスプローラ

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

      [ログ エクスプローラ] に移動

    2. [クエリ] ペインに次のクエリを入力します。

      resource.type="bigquery_project"
      protoPayload.metadata.jobChange.job.jobConfig.labels.dataform_workflow_execution_id="WORKFLOW_INVOCATION_ID"
      

      WORKFLOW_INVOCATION_ID は、ワークフロー呼び出し ID に置き換えます。

    3. [クエリを実行] をクリックします。

      このクエリは、そのワークフロー呼び出しの BigQuery ジョブログ エントリを返します。各ログエントリの protoPayload.metadata.jobChange.job.jobName フィールドには BigQuery ジョブリソース名が含まれ、jobStats フィールドと jobStatus フィールドには実行統計情報とステータスの詳細が含まれます。

    BigQuery Studio

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

      [BigQuery Studio] に移動

    2. [クエリエディタ] ペインで、次のクエリを実行します。

      SELECT
        job_id,
        creation_time,
        state,
        error_result,
        total_bytes_billed,
        (SELECT value FROM UNNEST(labels) WHERE key = 'dataform_workflow_execution_action_id_schema') AS target_schema,
        (SELECT value FROM UNNEST(labels) WHERE key = 'dataform_workflow_execution_action_id_name') AS target_name,
        query
      FROM
        `region-LOCATION`.INFORMATION_SCHEMA.JOBS
      WHERE
        DATE(creation_time) = CURRENT_DATE()
        AND EXISTS (
          SELECT 1
          FROM UNNEST(labels)
          WHERE
            key = 'dataform_workflow_execution_id'
            AND value = 'WORKFLOW_INVOCATION_ID'
        );
      

      次のように置き換えます。

      • LOCATION: ジョブが実行された BigQuery のロケーション(us、eu など)。
      • WORKFLOW_INVOCATION_ID: ワークフロー呼び出し ID。

失敗したワークフロー呼び出しに対するアラートを構成する

このセクションでは、ログ エクスプローラを使用して、失敗した Dataform ワークフローの呼び出しに対するログベースのアラートを構成する方法について説明します。

Monitoring を使用して、Dataform ワークフロー呼び出しの Logging ログの傾向を確認し、記述した条件の発生時に通知できます。

Dataform ワークフローの呼び出しは、Logging を使用してロギングされます。Dataform ワークフローの呼び出しでは、ロギングが自動的に有効になります。このため、Logging の料金が発生する場合があります。詳細については、Dataform の料金をご覧ください。

Dataform ワークフローの呼び出しが失敗したときにアラートを受け取るには、ログベースのアラートを作成します。

ログベースのアラートは、 Google Cloud コンソールの [ログ エクスプローラ] ページで作成するか、Monitoring API を使用して作成できます。このセクションでは、ログ エクスプローラを使用して Dataform ワークフロー呼び出しの失敗に対するログベースのアラートを作成する方法について説明します。

Dataform ワークフロー呼び出しに失敗に対するログベースのアラートを構成する手順は次のとおりです。

  1. Google Cloud コンソールで [Logging] を選択し、[ログ エクスプローラ] を選択します。

    [ログ エクスプローラ] に移動

  2. [クエリ] ペインで [クエリを表示] を選択し、次のクエリを入力します。

        resource.type="dataform.googleapis.com/Repository"
        jsonPayload.@type="type.googleapis.com/google.cloud.dataform.logging.v1.WorkflowInvocationCompletionLogEntry"
        jsonPayload.terminalState="FAILED"
     

    このクエリは、すべての失敗した Dataform ワークフローの呼び出しをアラートで通知します。

    1. 省略可: 失敗したワークフローの呼び出しをリリース構成でフィルタするには、クエリに次の行を追加します。

          jsonPayload.releaseConfigId="RELEASE_CONFIGURATION_ID"
      

      RELEASE_CONFIGURATION_ID は、リリース構成の ID に置き換えます。

    2. 省略可: 失敗したワークフローの呼び出しをワークフロー構成でフィルタするには、クエリに次の行を追加します。

          jsonPayload.workflowConfigId="WORKFLOW_CONFIGURATION_ID"
      

      WORKFLOW_CONFIGURATION_ID は、ワークフロー構成の ID に置き換えます。

    次のクエリは、daily リリース構成と production ワークフロー構成の両方に関連する Dataform ワークフロー呼び出しが失敗したときにアラートを通知します。

     resource.type="dataform.googleapis.com/Repository"
     jsonPayload.@type="type.googleapis.com/google.cloud.dataform.logging.v1.WorkflowInvocationCompletionLogEntry"
     jsonPayload.terminalState="FAILED"
     jsonPayload.releaseConfigId="daily"
     jsonPayload.workflowConfigId="production"
    
  3. 省略可: クエリを検証するには、[クエリ結果] ペインで [クエリを実行] を使用します。

  4. [クエリ結果] ペインの上部にある、[アラートを作成] をクリックします。ウィンドウの幅が狭い場合、[アラートを作成] オプションは [その他の操作] メニューに表示されます。

  5. [アラートの詳細] ペインで、アラートの名前と説明を入力します。

    1. [アラート名] フィールドにアラートの名前を入力します。例: Dataform: workflow failure。

    2. このアラートの説明を入力します。通知の受信者が問題を診断する際に有用な情報を表示することもできます。 次の文字列では、アラートの理由を要約しています。

      Log-based alert in project ${project} detected a failed Dataform workflow.
      

      このフィールドの内容のフォーマットと調整の詳細については、ユーザー定義のドキュメントで通知にアノテーションを付けるをご覧ください。

  6. 次のステップに進むには、[次へ] をクリックします。

  7. [アラートに含めるログを選択] ペインで、[ログをプレビュー] をクリックしてクエリと結果を確認します。

    ログ エクスプローラの [クエリ] ペインでクエリを作成することをおすすめします。[クエリ] ペインで作成したクエリもこのペインに表示されます。

    必要に応じて、このペインでクエリを編集できます。クエリを編集する場合は、[ログをプレビュー] をクリックして結果を確認します。

  8. [次へ] をクリックします。

  9. 通知間の最小時間を選択します。この値により、同じアラートが複数回トリガーされた場合に受信する通知の数を制御できます。この例では、オプションから [5 minute] を選択します。

  10. 省略可: インシデントの自動クローズ期間を選択します。デフォルトでは、インシデントの自動クローズ期間は 7 日間に設定されています。

  11. [次へ] をクリックします。

  12. アラートの通知チャネルを 1 つ以上選択します。この例では、メール通知チャネルを選択します。

    すでにメール通知チャンネルを構成している場合は、リストからそれを選択できます。そうでない場合は、[通知チャンネルを管理] をクリックしてメール チャンネルを追加します。通知チャンネルの作成については、通知チャンネルの作成と管理をご覧ください。

  13. [保存] をクリックします。

これで、ログベースのアラートをテストできるようになりました。 アラートをテストする手順については、ログベースのアラート ポリシーの例をテストするをご覧ください。

次のステップ