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

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

시작하기 전에

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

      Enable the API

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

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

  • 추가 요구사항은 구성하기로 결정한 구독 유형에 따라 달라집니다. 예를 들어 알림을 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`

다음 단계