本文說明如何執行下列操作:
事前準備
如要監控執行記錄,請務必完成下列操作:
必要的角色
如要取得查看執行記錄所需的權限,請要求管理員授予您下列 IAM 角色:
- Dataform 編輯者 (
roles/dataform.editor),用於追蹤工作流程執行作業的 Dataform 存放區 -
驗證執行作業的設定:自訂服務帳戶的服務帳戶使用者 (
roles/iam.serviceAccountUser)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
記錄檢視器 (roles/logging.viewer) IAM 角色可讓您以唯讀方式存取 Cloud Logging 的所有功能。如要進一步瞭解適用於 Logging 資料的 Identity and Access Management 權限和角色,請參閱「使用 IAM 控管存取權」。
如要建立及管理記錄警告,請確認您的 IAM 角色具備「建立及使用記錄警告政策所需的角色」一節所述的權限。
監控執行記錄
本節說明如何在 Dataform 查看執行記錄。
您可以查看存放區中觸發的所有執行作業記錄,以及過去 24 小時內在工作區中觸發的執行作業記錄。
查看存放區執行記錄
如要查看存放區中觸發的所有執行作業記錄,請按照下列步驟操作:
前往 Google Cloud 控制台的「Dataform」頁面。
前往存放區。
按一下「Workflow Execution Logs」(工作流程執行記錄)。
如要查看執行作業的詳細資料,請點選該執行作業。
如要查看執行作業中某項動作的詳細資料,請按一下「View details」(查看詳細資料)。
檢查工作區執行記錄
如要查看過去 24 小時內,工作區觸發的 1,000 項最新執行作業記錄,請按照下列步驟操作:
前往 Google Cloud 控制台的「Dataform」頁面。
前往存放區並選取工作區。
在工作區中,按一下「執行作業」。
如要查看執行作業的詳細資料,請點選該執行作業。
如要查看執行作業中某項動作的詳細資料,請按一下「View details」(查看詳細資料)。
查看 Dataform 的 Logging 記錄
本節說明如何查看 Dataform 工作流程叫用的 Cloud Logging 記錄。
每項 Dataform 工作流程叫用都會透過 Logging 記錄。系統會自動啟用 Dataform 工作流程叫用的記錄功能,這可能會產生 Logging 費用。詳情請參閱「Dataform 定價」。
查看記錄
如要查看記錄,請前往「Logs Explorer」頁面。
如要瞭解如何在 Logs Explorer 中篩選 Logging 記錄,請參閱「使用 Logs Explorer 查看記錄」。
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 記錄項目包含實用資訊,有助於監控工作流程叫用及偵錯。
記錄項目包含下列資訊類型:
receiveTimestamprelease_config_idrepository_idresource_containerworkflow_invocation_idworkflow_config_idseverity:可以是INFO、WARNING或ERRORterminalState:可以是SUCCEEDED、CANCELED或FAILEDtimestamp@type
Dataform 服務記錄提供高層級叫用事件,例如工作流程叫用完成記錄。不過,這些服務記錄不含個別 BigQuery 工作 ID,或精細的資料表層級動作執行作業。如要擷取工作流程叫用的精細動作層級執行詳細資料,以及對應的 BigQuery 工作 ID,請參閱「將 BigQuery 工作與工作流程叫用建立關聯」。
使用 Cloud Monitoring 設定指標和警告
您可以使用 Monitoring 觀察記錄中的趨勢,並在發生您描述的情況時通知您。
Logging 提供下列功能,可將記錄檔中的資料提供給 Monitoring:
- 記錄指標,可用於以下用途:
- 建立警告政策,以便在資料隨時間變化時收到通知。
- 建立圖表,顯示一段時間內的變化。
- 記錄式警告:記錄中出現特定事件時,系統會通知您。
如要進一步瞭解記錄指標和記錄警告,請參閱「監控記錄」。
如要瞭解如何為 Dataform 工作流程叫用設定記錄警告,請參閱「設定工作流程叫用失敗警告」。
將 BigQuery 工作與工作流程叫用建立關聯
dataform.googleapis.com/Repository 資源類型下的 Dataform 服務記錄,會提供高階工作流程叫用事件,例如工作流程叫用完成記錄。不過,這些服務記錄不含精細的資料表層級動作執行作業,或特定 BigQuery 工作 ID。
Dataform 執行建立或更新資料表、檢視表或斷言等動作時,會在 BigQuery 提交工作,並自動為每項工作附加標籤。您也可以直接從 Dataform API 擷取每項動作的 BigQuery 工作 ID,方法是呼叫 workflowInvocations.query 方法並檢查 bigqueryAction.jobId 欄位。
下表列出 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 工作和動作層級執行詳細資料,與工作流程叫用建立關聯,請按照下列步驟操作:
取得執行作業的工作流程叫用 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。如要透過在 Logs Explorer 中查詢 BigQuery 稽核記錄,或在 BigQuery 中查詢
INFORMATION_SCHEMA.JOBSview,找出相關的 BigQuery 工作,請選取下列其中一個選項:Logs Explorer
前往 Google Cloud 控制台的「Logs Explorer」頁面。
在「查詢」窗格中,輸入下列查詢:
resource.type="bigquery_project" protoPayload.metadata.jobChange.job.jobConfig.labels.dataform_workflow_execution_id="WORKFLOW_INVOCATION_ID"
將
WORKFLOW_INVOCATION_ID替換為工作流程叫用 ID。點選「執行查詢」。
查詢會傳回該工作流程叫用的 BigQuery 工作記錄項目。在每個記錄項目中,
protoPayload.metadata.jobChange.job.jobName欄位包含 BigQuery 工作資源名稱,jobStats和jobStatus欄位則提供執行統計資料和狀態詳細資料。
BigQuery Studio
前往 Google Cloud 控制台的「BigQuery Studio」頁面。
在查詢編輯器中執行下列查詢:
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。
設定工作流程叫用失敗的警告
本節說明如何使用 Logs Explorer,為失敗的 Dataform 工作流程叫用設定記錄式警告。
您可以使用 Monitoring 觀察 Dataform 工作流程叫用的 Logging 記錄趨勢,並在發生指定情況時通知您。
每個 Dataform 工作流程叫用都會使用 Logging 記錄。Dataform 工作流程叫用會自動啟用記錄功能,這可能會產生 Logging 費用。詳情請參閱「Dataform 定價」。
如要在 Dataform 工作流程叫用失敗時收到快訊,可以建立記錄式快訊。
您可以在 Google Cloud 控制台的「Logs Explorer」頁面建立記錄警告,也可以使用 Monitoring API 建立。本節說明如何使用 Logs Explorer,為 Dataform 工作流程叫用失敗建立記錄檔快訊。
如要為失敗的 Dataform 工作流程叫用設定記錄檔警告,請按照下列步驟操作:
在 Google Cloud 控制台中,依序選取「Logging」和「Logs Explorer」。
在「查詢」窗格中,選取「顯示查詢」並輸入下列查詢:
resource.type="dataform.googleapis.com/Repository" jsonPayload.@type="type.googleapis.com/google.cloud.dataform.logging.v1.WorkflowInvocationCompletionLogEntry" jsonPayload.terminalState="FAILED"這項查詢會針對所有失敗的 Dataform 工作流程叫用發出警告。
選用:如要依發布版本設定篩選失敗的工作流程叫用,請在查詢中附加下列內容:
jsonPayload.releaseConfigId="RELEASE_CONFIGURATION_ID"將
RELEASE_CONFIGURATION_ID替換為版本設定的 ID。選用:如要依工作流程設定篩選失敗的工作流程叫用,請在查詢中附加下列內容:
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"選用:如要驗證查詢,請使用「查詢結果」窗格中的「執行查詢」。
在「Query results」(查詢結果) 窗格的標頭中,點選「Create alert」(建立快訊)。如果視窗較窄,「Create alert」(建立快訊) 選項可能會顯示在「Actions」(動作) 選單中。
在「警報詳細資料」窗格中,輸入警報的名稱和說明:
在「快訊名稱」欄位中輸入快訊名稱。例如:
Dataform: workflow failure。輸入這項警告的說明。您也可以加入相關資訊,協助通知收件者診斷問題。下列字串會匯總快訊原因:
Log-based alert in project ${project} detected a failed Dataform workflow.如要瞭解如何設定及自訂這個欄位的內容格式,請參閱「使用使用者定義的文件為通知加上註解」。
如要前往下一個步驟,請按「Next」(下一步)。
在「Choose logs to include in the alert」(選擇要加入快訊的記錄檔) 窗格中,按一下「Preview logs」(預覽記錄),檢查查詢和結果。
建議您在 Logs Explorer Query 窗格中建立查詢。您在「Query」(查詢) 窗格中建構的查詢也會顯示在此窗格中。
如有需要,您可以在這個窗格中編輯查詢。如要編輯查詢,請按一下「Preview logs」(預覽記錄) 查看結果。
點選「下一步」。
選取通知時間間隔下限。這個值可讓您控制如果觸發多次,會收到這項快訊的通知幾次。在本範例中,請從選項中選取「5 min」(5 分鐘)。
選用:選取事件自動關閉期限。根據預設,事件自動關閉時間長度設為 7 天。
點選「下一步」。
為快訊選取一或多個通知管道。這個範例是以電子郵件通知管道為例。
如果您已設定電子郵件通知管道,可以從清單中選取該管道。如果沒有,請按一下「Manage notification channels」(管理通知管道),並新增電子郵件管道。如要瞭解如何建立通知管道,請參閱「建立及管理通知管道」。
按一下「儲存」。
記錄式警告現已準備就緒,可以開始測試。如要瞭解如何測試警告,請參閱「測試記錄指標警告政策範例」。
後續步驟
- 瞭解如何手動觸發執行作業。
- 瞭解如何使用 Workflows 和 Cloud Scheduler 排定執行作業。
- 瞭解如何使用 Dataform API 設定編譯覆寫。
- 瞭解 Cloud 稽核記錄和 Monitoring。
- 瞭解 Logging 定價。