실행 모니터링

이 문서에서는 다음을 수행하는 방법을 보여줍니다.

시작하기 전에

실행 로그를 모니터링하려면 다음을 수행해야 합니다.

  1. Google Cloud 콘솔에서 Dataform 페이지로 이동합니다.

    Dataform으로 이동

  2. 저장소를 선택하거나 만듭니다.

  3. 개발 작업공간을 선택하거나 만듭니다.

  4. 최소 한 번 이상 실행을 트리거합니다.

필요한 역할

실행 로그를 보는 데 필요한 권한을 얻으려면 관리자에게 다음 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에 로그의 데이터를 제공하기 위해 Logging에서는 다음과 같은 항목을 제공합니다.

  • 로그 기반 측정항목(다음 용도로 사용 가능):
    • 시간 경과에 따른 변경사항을 알리는 알림 정책 만들기
    • 시간 경과에 따른 변화를 표시하는 차트 만들기
  • 로그 기반 알림은 특정 이벤트가 로그에 나타날 때마다 알림을 제공합니다.

로그 기반 측정항목 및 로그 기반 알림에 대한 자세한 내용은 로그 모니터링을 참조하세요.

Dataform 워크플로 호출에 대한 로그 기반 알림을 구성하는 방법은 실패한 워크플로 호출에 대한 알림 구성을 참조하세요.

BigQuery 작업을 워크플로 호출과 연결

dataform.googleapis.com/Repository 리소스 유형의 Dataform 서비스 로그는 워크플로 호출 완료 로그와 같은 상위 수준 워크플로 호출 이벤트를 제공합니다. 하지만 이러한 서비스 로그에는 세분화된 테이블 수준 작업 실행이나 특정 BigQuery 작업 ID가 포함되지 않습니다.

Dataform은 테이블, 뷰 또는 어설션 생성 또는 업데이트와 같은 작업을 실행할 때 BigQuery에서 작업을 제출하고 각 작업에 라벨을 자동으로 연결합니다. workflowInvocations.query 메서드를 호출하고 bigqueryAction.jobId 필드를 검사하여 Dataform API에서 직접 각 작업의 BigQuery 작업 ID를 검색할 수도 있습니다.

다음 표에는 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분을 선택합니다.

  10. 선택사항: 이슈 자동 종료 기간을 선택합니다. 기본적으로 이슈 자동 종료 기간은 7일로 설정됩니다.

  11. 다음을 클릭합니다.

  12. 알림을 받을 알림 채널을 하나 이상 선택하세요. 이 예시에서는 이메일 알림 채널을 선택합니다.

    이메일 알림 채널이 이미 구성되어 있으면 목록에서 선택할 수 있습니다. 그렇지 않으면 알림 채널 관리를 클릭하고 이메일 채널을 추가합니다. 알림 채널 만들기에 대한 상세 설명은 알림 채널 만들기 및 관리를 참조하세요.

  13. 저장을 클릭합니다.

이제 로그 기반 알림을 테스트할 수 있습니다. 알림을 테스트하는 방법은 예시 로그 기반 알림 정책 테스트를 참조하세요.

다음 단계