Pub/Sub 알림 및 BigQuery를 사용하여 작업 상태 모니터링

이 문서에서는 Pub/Sub 알림을 설정하여 작업 및 태스크 상태 변경을 모니터링하는 방법을 설명합니다. 이 알림은 다양한 사용 사례에 사용할 수 있습니다. 예를 들어 이 문서에서는 데이터를 분석하는 데 사용할 수 있는 BigQuery 테이블로 알림을 스트리밍하는 방법을 설명합니다. Pub/Sub 알림의 사용 사례에 대한 자세한 내용은 Pub/Sub 문서의 구독 유형 선택을 참조하세요.

또는 작업에 관한 모든 정보를 BigQuery로 내보내려면 작업 정보 내보내기를 참고하세요.

시작하기 전에

  1. Batch를 사용한 적이 없으면 Batch 시작하기를 검토하고 프로젝트 및 사용자 기본 요건을 완료하여 Batch를 사용 설정하세요.
  2. Batch 작업에 Pub/Sub 알림을 설정하려는 경우 다음을 수행하세요.
    1. Enable the Pub/Sub API.

      Enable the API

    2. Pub/Sub 주제 및 구독을 구성하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 Pub/Sub 편집자(roles/pubsub.editor) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

      커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

  3. 추가 요구사항은 구성하기로 결정한 구독 유형에 따라 달라집니다. 예를 들어 알림을 BigQuery 테이블로 스트리밍하고 분석하려면 다음을 수행해야 합니다.
    1. Enable the BigQuery API.

      Enable the API

    2. Pub/Sub 서비스 계정에서 Pub/Sub 알림을 BigQuery로 스트리밍하는 데 필요한 권한을 확보하려면 관리자에게 Pub/Sub 서비스 계정에 Pub/Sub 주제의 프로젝트에 대한 BigQuery Data 편집기(roles/bigquery.dataEditor) IAM 역할을 부여해 달라고 요청하세요.

      이 역할 할당에 대한 자세한 내용은 Pub/Sub 서비스 계정에 BigQuery 역할 할당을 참조하세요.

    3. BigQuery에서 알림을 분석하려는 모든 사용자에게 필요한 권한이 있는지 확인하세요.

      BigQuery에서 Pub/Sub 알림을 쿼리하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.

Batch에 대한 Pub/Sub 알림 설정

Batch는 알림, 관측 가능성 또는 분석에 사용할 수 있는 작업 및 태스크 상태 변경에 대한 Pub/Sub 알림을 지원합니다.

하나 이상의 Batch 작업에 대한 Pub/Sub 알림을 설정하려면 다음 섹션에 설명된 단계를 완료하세요.

  1. Batch 작업에 대한 Pub/Sub 주제를 만들거나 식별합니다.
  2. 알림을 수신하고 사용하도록 주제에 대한 구독을 하나 이상 만듭니다.
  3. 주제에 대한 알림을 보내도록 작업을 구성합니다.

Batch에 대한 Pub/Sub 알림을 설정한 후 필요에 따라 특정 알림을 보내도록 각 작업을 구성할 수 있습니다. 작업 또는 태스크 상태가 변경될 때마다 알림을 받을 수도 있고 특정 작업 또는 태스크 상태에 대한 알림을 필터링할 수도 있습니다. 특히 Pub/Sub는 작업 또는 태스크의 첫 번째 상태에 대해서는 알림을 보내지 않고, 작업이 한 상태에서 다른 상태로 전환되는 경우에만 알림을 보냅니다. Pub/Sub 알림에 대해 구성할 수 있는 속성에 대한 자세한 내용은 Pub/Sub 상태 알림을 보내는 작업 만들기 및 실행을 참조하세요.

Batch에 대한 Pub/Sub 주제 만들기 또는 식별

Batch 알림에 사용할 새 Pub/Sub 주제를 만들거나 기존 Pub/Sub 주제를 식별합니다.

이 문서의 뒷부분에 설명된 대로 관리자가 이를 허용하는 추가 권한을 부여할 때까지 작업에서 이 Pub/Sub 주제에 대한 알림을 보낼 수 없습니다.

알림을 수신하고 사용하도록 구독 만들기

Pub/Sub 주제에 게시된 메시지를 수신하고 사용하려면 해당 주제에 대한 구독을 하나 이상 만들어야 합니다.

예를 들어 한 가지 옵션은 알림을 BigQuery로 스트리밍하도록 주제를 구성하는 것입니다. 그러면 알림을 게시하는 작업을 실행할 때 BigQuery 테이블에서 알림을 수신하고 분석할 수 있습니다. 자세한 내용은 이 문서에서 예: BigQuery에서 Pub/Sub 알림 수신 및 사용을 참조하세요.

그렇지 않은 경우 구독 및 기타 구독 옵션에 대해 자세히 알아보려면 Pub/Sub 문서에서 구독 개요를 참조하세요.

주제에 대한 알림을 보내도록 작업 구성

주제에 대한 Pub/Sub 알림을 보내는 작업을 구성하려면 Pub/Sub 상태 알림을 보내는 작업 만들기 및 실행 페이지의 안내를 따르세요. 특히 다음을 준수하세요.

  1. 아직 권한을 부여받지 않은 경우 관리자에게 Pub/Sub 주제에 대한 알림을 보내는 작업에 필요한 모든 권한을 부여해 달라고 요청합니다. 이러한 권한은 해당 페이지의 필요한 역할 섹션에 나열되어 있습니다.
  2. 작업의 notifications 필드를 정의하여 Pub/Sub 알림을 사용 설정하는 작업을 만들고 실행합니다.

예: BigQuery에서 Pub/Sub 알림 수신 및 사용

다음 섹션에서는 BigQuery에서 Pub/Sub 알림을 수신하고 사용하는 사용 사례 예시를 설명합니다. 주제의 Pub/Sub 알림을 BigQuery 테이블로 스트리밍하는 구독을 구성하면 작업 및 태스크 상태 변경 내역을 보관하고 해당 변경 사항을 쿼리할 수 있습니다.

BigQuery로 알림을 스트리밍하는 구독 구성

다음을 수행하여 주제에서 BigQuery 테이블로 알림을 스트리밍하는 Pub/Sub 구독을 구성합니다.

  1. 아직 수행하지 않았다면 Batch에 대한 Pub/Sub 주제를 만들거나 식별합니다.

  2. 아직 없으면 BigQuery 데이터 세트를 만듭니다.

  3. 다음 스키마 정의를 사용하여 BigQuery 테이블을 만듭니다.

    [
      {
        "name": "data",
        "type": "STRING"
      },
      {
        "name": "subscription_name",
        "type": "STRING"
      },
      {
        "name": "message_id",
        "type": "STRING"
      },
      {
        "name": "attributes",
        "type": "JSON"
      },
      {
        "name": "publish_time",
        "type": "TIMESTAMP",
        "mode": "NULLABLE"
      }
    ]
    
  4. BigQuery로 스트리밍되는 Pub/Sub 구독을 만들고 다음 옵션을 지정합니다.

    • 주제: Batch에 대한 Pub/Sub 주제를 선택합니다.
    • 프로젝트: BigQuery 테이블이 포함된 프로젝트를 선택합니다.
    • 데이터 세트: BigQuery 테이블이 포함된 데이터 세트를 선택합니다.
    • 테이블: 이전 단계에서 만든 테이블을 선택합니다.
    • 주제 스키마 사용을 선택합니다.
    • 메타데이터 쓰기를 선택합니다.

이제 Pub/Sub 알림을 해당 주제로 보낼 때마다 Pub/Sub는 해당 알림을 BigQuery 테이블로 스트리밍합니다. Pub/Sub 알림을 보내도록 작업을 구성한 후 BigQuery에서 알림을 분석할 수 있습니다.

BigQuery에서 알림 분석

주제에 대한 BigQuery 테이블 구독을 구성하고 주제에 알림을 보내는 작업을 실행한 후 BigQuery에서 알림을 분석할 수 있습니다. BigQuery에서 알림을 분석하려면 BigQuery 테이블의 attributes 열에 대해 쿼리를 실행합니다. 쿼리할 수 있는 속성은 태스크 또는 작업에 대한 알림을 구성했는지 여부에 따라 달라집니다.

태스크 알림의 다음 속성을 쿼리할 수 있습니다.

  • JobUID
  • NewTaskState
  • Region
  • TaskName
  • TaskUID
  • Type

작업 알림의 다음 속성을 쿼리할 수 있습니다.

  • JobUID
  • JobName
  • NewJobState
  • Region
  • Type

예를 들어 다음 쿼리는 각 알림과 연결된 JobUID를 보여줍니다.

select attributes.JobUID from `example-table`

다음 단계