Managed Service for Apache Kafka 클러스터의 합성 데이터 생성

콘솔을 사용하여 Google Cloud Managed Service for Apache Kafka 클러스터의 합성 테스트 데이터를 생성하는 방법을 알아봅니다. Google Cloud

이 가이드에서는 Dataflow Streaming Data Generator 템플릿을 사용하여 샘플 게임 원격 분석 데이터를 Managed Service for Apache Kafka 주제에 자동으로 게시합니다. Streaming Data Generator는 구성 가능한 속도로 지정된 스키마를 기반으로 합성 테스트 레코드를 생성하는 Dataflow 템플릿입니다. 합성 데이터를 생성하면 로컬 Kafka 클라이언트를 설치하거나 커스텀 프로듀서 코드를 작성하지 않고도 클러스터 활동을 관찰하고, 부하 처리를 테스트하고, 모니터링 측정항목을 확인할 수 있습니다. 템플릿에 대한 자세한 내용은 Dataflow Streaming Data Generator 템플릿을 참조하세요.

시작하기 전에

이 튜토리얼을 시작하기 전에 새 Managed Service for Apache Kafka 클러스터를 만듭니다. 클러스터가 이미 있는 경우 이 단계를 건너뛸 수 있습니다. 클러스터를 만드는 데 필요한 역할 및 권한에 대한 자세한 내용은 클러스터 만들기 및 보기를 참조하세요. 해당 가이드를 따르는 경우 이 가이드로 돌아가기 전에 클러스터 만들기 섹션만 완료하세요.

클러스터를 만드는 방법

콘솔

  1. Managed Service for Apache Kafka > 클러스터 페이지로 이동합니다.

    클러스터로 이동

  2. 만들기 를 클릭합니다.
  3. 클러스터 이름 체크박스에 클러스터 이름을 입력합니다.
  4. 리전 목록에서 클러스터의 위치를 선택합니다.
  5. 네트워크 구성에서 클러스터에 액세스할 수 있는 서브넷을 구성합니다.
    1. 프로젝트에서 사용자 프로젝트를 선택합니다.
    2. 네트워크에서 VPC 네트워크를 선택합니다.
    3. 서브넷에서 서브넷을 선택합니다.
    4. 완료 를 클릭합니다.
  6. 만들기 를 클릭합니다.

만들기를 클릭하면 클러스터 상태가 Creating이 됩니다. 클러스터 가 준비되면 상태는 Active입니다.

gcloud

Kafka 클러스터를 만들려면 managed-kafka clusters create 명령어를 실행합니다.

gcloud managed-kafka clusters create KAFKA_CLUSTER \
--location=REGION \
--cpu=3 \
--memory=3GiB \
--subnets=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \
--async

다음을 바꿉니다.

  • KAFKA_CLUSTER: Kafka 클러스터의 이름
  • REGION: 클러스터의 위치
  • PROJECT_ID: 프로젝트 ID입니다.
  • SUBNET_NAME: 클러스터를 만들려는 서브넷(예: default)

지원되는 위치에 대한 자세한 내용은 Managed Service for Apache Kafka 위치를 참조하세요..

이 명령어는 비동기식으로 실행되며 작업 ID를 반환합니다.

Check operation [projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID] for status.

만들기 작업의 진행 상황을 추적하려면 gcloud managed-kafka operations describe 명령어를 사용합니다.

gcloud managed-kafka operations describe OPERATION_ID \
  --location=REGION

클러스터가 준비되면 이 명령어의 출력에 state: ACTIVE 항목이 포함됩니다. 자세한 내용은 클러스터 생성 작업 모니터링을 참조하세요.

필요한 역할

클러스터의 합성 데이터를 생성하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

이러한 사전 정의된 역할에는 클러스터의 합성 데이터를 생성하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

클러스터의 합성 데이터를 생성하려면 다음 권한이 필요합니다.

  • dataflow.jobs.create
  • dataflow.jobs.get
  • managedkafka.clusters.get
  • managedkafka.topics.get
  • managedkafka.topics.create
  • managedkafka.topics.publish
  • resourcemanager.projects.setIamPolicy

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

Compute Engine 기본 서비스 계정에 Dataflow 작업을 실행하는 데 필요한 권한이 있는지 확인하려면 관리자에게 프로젝트의 Compute Engine 기본 서비스 계정에 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

관리자는 Compute Engine 기본 서비스 계정 에 필요한 권한을 커스텀 역할이나 다른 사전 정의된 역할을 통해 부여할 수도 있습니다.

IAM 역할을 부여할 수 있는 권한이 있는 경우 Google Cloud 콘솔에서 필요한 역할을 부여하라는 메시지가 표시됩니다. 합성 데이터 생성 프로세스 중에 역할을 부여할 수 있는 권한이 없는 경우 콘솔에 관리자에게 필요한 권한을 부여해 달라고 요청하라는 메시지가 표시됩니다.

합성 데이터 생성

Kafka 주제의 합성 데이터를 생성하는 Dataflow 작업을 만들고 실행하려면 다음 단계를 따르세요.

  1. 콘솔에서 Google Cloud Managed Service for Apache Kafka > 클러스터 페이지로 이동합니다.

    클러스터로 이동

  2. test-cluster와 같은 클러스터 이름을 클릭합니다.

  3. 소스 탭을 선택합니다.

  4. 소스 페이지의 합성 데이터 생성 카드에서 Dataflow 작업 만들기 를 클릭합니다. 데이터 생성 창이 열립니다.

  5. 데이터 생성 창의 Kafka 주제 드롭다운 목록에서 test-topic과 같은 주제를 선택합니다. 주제가 없는 경우 다음 단계를 따라 주제를 만듭니다.

    1. Kafka 주제 드롭다운 목록에서 주제 만들기 를 클릭합니다. 주제 만들기 창이 열립니다.
    2. 주제 이름 필드에 test-topic을 입력합니다.
    3. 파티션 수 (3) 및 복제본 요소 (3)의 기본값을 유지합니다.
    4. 만들기 를 클릭합니다.
  6. 출력 속도(QPS) 필드에 생성기가 생성할 초당 쿼리 수(예: 100)를 입력합니다. 이렇게 하면 클러스터가 다양한 부하를 처리하는 방식을 테스트할 수 있습니다.

  7. Dataflow 서비스 계정에 필요한 권한이 없다는 경고가 표시되면 부여 를 클릭하여 다음 역할을 할당합니다.

    • Dataflow 작업자 (roles/dataflow.worker)
    • 관리형 Kafka 클라이언트 (roles/managedkafka.client)
  8. 데이터 생성 창에서 만들기 를 클릭하여 Dataflow 작업을 실행합니다.

    Dataflow 작업이 생성되었다는 알림이 표시됩니다.

  9. 알림에서 작업 보기 를 클릭하여 Dataflow 작업 세부정보 페이지를 엽니다. 여기에서 작업 그래프, 상태, 실행 측정항목을 관찰할 수 있습니다.

클러스터 측정항목 보기

Dataflow 작업이 시작된 후 클러스터로 유입되는 합성 데이터를 관찰합니다.

  1. test-cluster클러스터 세부정보 페이지에서 모니터링 탭을 클릭합니다.

  2. 바이트 속도제작 처리량별 상위 5개 주제 차트를 검토하여 주제에 데이터가 활발하게 생성되고 있는지 확인합니다.

메시지 보기

다음 방법 중 하나를 사용하여 합성 메시지가 주제에 게시되고 있는지 확인합니다.

Kafka 명령줄 도구에서 보기

클라이언트 VM의 Kafka CLI 도구를 사용하여 클러스터에서 직접 메시지를 사용하려면 다음 단계를 따르세요.

  1. SSH를 사용하여 클라이언트 VM에 연결합니다. 클라이언트 VM을 설정하지 않은 경우 클라이언트 VM 만들기를 참조하세요.

  2. 콘솔에서 클러스터의 부트스트랩 서버 주소를 가져와 클라이언트 VM의 환경 변수로 설정합니다. Google Cloud

    1. 콘솔에서 Google Cloud Managed Service for Apache Kafka > 클러스터 페이지로 이동합니다.

      클러스터로 이동

    2. test-cluster와 같은 클러스터 이름을 클릭합니다.

    3. 클러스터 세부정보 페이지에서 구성 을 클릭합니다.

    4. 부트스트랩 URL 아래에 나열된 값을 복사합니다.

  3. 클라이언트 VM에서 환경 변수를 설정합니다.

    ```sh
    export BOOTSTRAP="BOOTSTRAP_URL"
    ```
    

    BOOTSTRAP_URL을 복사한 부트스트랩 주소로 바꿉니다.

  4. kafka-console-consumer.sh 명령어를 실행하여 메시지를 읽습니다.

    kafka-console-consumer.sh \
     --bootstrap-server $BOOTSTRAP \
     --topic TOPIC_ID \
     --from-beginning \
     --consumer.config client.properties
    

    TOPIC_ID을 주제 이름(예: test-topic)으로 바꿉니다.

    콘솔에 스트리밍 합성 게임 데이터 레코드가 사용될 때 표시됩니다.

  5. Ctrl+C를 눌러 메시지 사용을 중지합니다.

BigQuery에서 보기

Kafka 주제에서 BigQuery로 데이터를 스트리밍하고 레코드를 보려면 다음 단계를 따르세요.

  1. 합성 데이터는 원시 JSON이므로 커넥터를 만들기 전에 BigQuery에서 대상 테이블을 수동으로 만들어야 합니다. 테이블을 만드는 방법에 대한 자세한 내용은 스키마 정의가 있는 빈 테이블 만들기를 참조하세요. 다음 스키마를 사용하여 데이터 세트에 test-topic이라는 테이블을 만듭니다.

    [
      {"name": "eventId", "type": "STRING"},
      {"name": "eventTimestamp", "type": "INTEGER"},
      {"name": "ipv4", "type": "STRING"},
      {"name": "ipv6", "type": "STRING"},
      {"name": "country", "type": "STRING"},
      {"name": "username", "type": "STRING"},
      {"name": "quest", "type": "STRING"},
      {"name": "score", "type": "INTEGER"},
      {"name": "completed", "type": "BOOLEAN"}
    ]
    
  2. Connect 클러스터에서 BigQuery 싱크 커넥터 를 만들어 주제의 메시지를 BigQuery 테이블로 스트리밍합니다. 커넥터를 구성할 때는 다음 샘플 속성을 사용하고 PROJECT_ID를 프로젝트 ID로 바꿉니다.

    bigQueryPartitionDecorator=false
    connector.class=com.wepay.kafka.connect.bigquery.BigQuerySinkConnector
    defaultDataset=test_dataset
    key.converter=org.apache.kafka.connect.storage.StringConverter
    project=PROJECT_ID
    tasks.max=3
    topics=test-topic
    value.converter=org.apache.kafka.connect.json.JsonConverter
    value.converter.schemas.enable=false
    
  3. 커넥터가 데이터 스트리밍을 시작한 후 콘솔의 BigQuery 페이지 로 이동합니다. Google Cloud

    BigQuery로 이동

  4. 탐색기 패널에서 프로젝트 ID를 펼치고 데이터 세트 test_dataset을 선택합니다.

  5. 테이블 이름 test-topic을 클릭합니다.

  6. 미리보기 탭을 클릭하여 스트리밍된 종합 레코드를 봅니다. 또는 새 쿼리 작성 을 클릭하고 다음 SQL 쿼리를 실행합니다.

    SELECT * FROM `PROJECT_ID.DATASET_ID.TABLE_ID` LIMIT 10;
    

    다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID
    • DATASET_ID: 데이터 세트 ID(예: test_dataset)
    • TABLE_ID: 테이블 ID(예: )test-topic
  7. 실행 을 클릭하여 쿼리 결과 창에서 샘플 레코드를 봅니다.

    참고: SELECT COUNT(*) 쿼리를 사용하여 레코드를 확인하지 마세요. 커넥터는 BigQuery Streaming API를 사용하므로 데이터가 처음에는 스트리밍 버퍼에 기록됩니다. SELECT *를 사용하면 데이터가 즉시 표시되지만 행 수가 업데이트되는 데 몇 분 정도 걸릴 수 있습니다.

정리

이 페이지에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 수행합니다.

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

    Dataflow 작업으로 이동

  2. 주제에 대해 만든 작업의 이름을 클릭합니다.

  3. 중지 를 클릭합니다.

  4. 취소를 선택한 후 작업 중지를 클릭합니다.

  5. 선택사항: Kafka 클러스터가 더 이상 필요하지 않으면 Managed Service for Apache Kafka 클러스터 페이지로 이동하여 test-cluster를 선택하고 삭제 를 클릭합니다.

다음 단계