Generare dati sintetici per un cluster Managed Service per Apache Kafka

Scopri come generare dati di test sintetici per un cluster Google Cloud Managed Service per Apache Kafka utilizzando la Google Cloud console.

Questa guida utilizza il modello Dataflow Streaming Data Generator per pubblicare automaticamente dati di telemetria di esempio del gioco in un argomento Managed Service per Apache Kafka. Streaming Data Generator è un modello Dataflow che genera record di test sintetici in base a uno schema specificato a una frequenza configurabile. La generazione di dati sintetici consente di osservare l'attività del cluster, testare la gestione del carico e verificare le metriche di monitoraggio senza installare un client Kafka locale o scrivere codice di produzione personalizzato. Per ulteriori informazioni sul modello, consulta Modello Dataflow Streaming Data Generator.

Prima di iniziare

Prima di iniziare questo tutorial, crea un nuovo cluster Managed Service per Apache Kafka. Se hai già un cluster, puoi saltare questo passaggio. Per informazioni sui ruoli e sulle autorizzazioni richiesti per creare un cluster, consulta Creare e visualizzare un cluster. Se segui questa guida, completa solo la sezione Crea un cluster prima di tornare a questa guida.

Come creare un cluster

Console

  1. Vai alla pagina Managed Service per Apache Kafka > Cluster.

    Vai a Cluster

  2. Fai clic su Crea.
  3. Nella casella Nome cluster, inserisci un nome per il cluster.
  4. Nell'elenco Regione, seleziona una località per il cluster.
  5. Per Configurazione di rete, configura la subnet in cui è accessibile il cluster:
    1. In Progetto, seleziona il tuo progetto.
    2. In Rete, seleziona la rete VPC.
    3. In Subnet, seleziona la subnet.
    4. Fai clic su Fine.
  6. Fai clic su Crea.

Dopo aver fatto clic su Crea, lo stato del cluster è Creating. Quando il cluster è pronto, lo stato è Active.

gcloud

Per creare un cluster Kafka, esegui il managed-kafka clusters create comando.

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

Sostituisci quanto segue:

  • KAFKA_CLUSTER: un nome per il cluster Kafka
  • REGION: la località del cluster
  • PROJECT_ID: il tuo ID progetto
  • SUBNET_NAME: la subnet in cui vuoi creare il cluster, ad esempio default

Per informazioni sulle località supportate, consulta Località di Managed Service per Apache Kafka.

Il comando viene eseguito in modo asincrono e restituisce un ID operazione:

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

Per monitorare l'avanzamento dell'operazione di creazione, utilizza il gcloud managed-kafka operations describe comando:

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

Quando il cluster è pronto, l'output di questo comando include la voce state: ACTIVE. Per ulteriori informazioni, consulta Monitorare l'operazione di creazione del cluster.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per generare dati sintetici per un cluster, chiedi all'amministratore di concederti i seguenti ruoli IAM per il progetto:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questi ruoli predefiniti contengono le autorizzazioni necessarie per generare dati sintetici per un cluster. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per generare dati sintetici per un cluster sono necessarie le seguenti autorizzazioni:

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

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Per assicurarti che il service account predefinito di Compute Engine disponga delle autorizzazioni necessarie per eseguire il job Dataflow, chiedi all'amministratore di concedere i seguenti ruoli IAM al service account predefinito di Compute Engine sul progetto:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

L'amministratore potrebbe anche essere in grado di concedere al service account predefinito di Compute Engine le autorizzazioni richieste tramite ruoli personalizzati o altri ruoli predefiniti.

Se disponi delle autorizzazioni per concedere i ruoli IAM, la Google Cloud console ti chiede di concedere i ruoli richiesti durante il processo di generazione dei dati sintetici. Se non hai l'autorizzazione per concedere i ruoli, la console visualizza un messaggio che ti chiede di richiedere a un amministratore di concedere le autorizzazioni richieste.

Generare dati sintetici

Per creare e avviare il job Dataflow che genera dati sintetici per l'argomento Kafka:

  1. Nella Google Cloud console, vai alla pagina Managed Service per Apache Kafka > Cluster.

    Vai a Cluster

  2. Fai clic sul nome del cluster, ad esempio test-cluster.

  3. Seleziona la scheda Origini.

  4. Nella pagina Origini, nella scheda Genera dati sintetici, fai clic su Crea un job Dataflow. Viene visualizzato il riquadro Produci dati.

  5. Nel riquadro Produci dati, seleziona un argomento dall'elenco a discesa Argomento Kafka, ad esempio test-topic. Se non hai un argomento, creane uno:

    1. Nell'elenco a discesa Argomento Kafka, fai clic su Crea argomento. Viene visualizzato il riquadro Crea argomento.
    2. Nel campo Nome argomento, inserisci test-topic.
    3. Mantieni i valori predefiniti per Conteggio partizioni (3) e Fattore di replica (3).
    4. Fai clic su Crea.
  6. Nel campo Frequenza di output (QPS), inserisci la frequenza di query al secondo che vuoi che il generatore produca, ad esempio 100. In questo modo puoi testare il modo in cui il cluster gestisce carichi diversi.

  7. Se viene visualizzato un avviso che indica che il service account Dataflow non dispone delle autorizzazioni necessarie, fai clic su Concedi per assegnare i seguenti ruoli:

    • Dataflow Worker (roles/dataflow.worker)
    • Managed Kafka Client (roles/managedkafka.client)
  8. Nel riquadro Produci dati, fai clic su Crea per avviare il job Dataflow.

    Viene visualizzata una notifica che indica che il job Dataflow è stato creato.

  9. Nella notifica, fai clic su Visualizza job per aprire la pagina Dettagli job Dataflow , dove puoi osservare il grafico del job, lo stato e le metriche di esecuzione.

Visualizzare le metriche del cluster

Dopo l'avvio del job Dataflow, osserva i dati sintetici che vengono inseriti nel cluster:

  1. Nella pagina Dettagli cluster per test-cluster, fai clic sulla scheda Monitoraggio.

  2. Esamina i grafici Frequenze di byte e Primi 5 argomenti in base al throughput di produzione per verificare che i dati vengano prodotti attivamente nell'argomento.

Visualizzare i messaggi

Verifica che i messaggi sintetici vengano pubblicati nell'argomento utilizzando uno dei seguenti metodi.

Visualizzare negli strumenti a riga di comando di Kafka

Per utilizzare i messaggi direttamente dal cluster utilizzando gli strumenti CLI di Kafka su una VM client:

  1. Connettiti alla VM client utilizzando SSH. Se non hai configurato una VM client, consulta Creare una VM client.

  2. Ottieni l'indirizzo del server di bootstrap del cluster dalla Google Cloud console e impostalo come variabile di ambiente nella VM client:

    1. Nella Google Cloud console, vai alla pagina Managed Service per Apache Kafka > Cluster.

      Vai a Cluster

    2. Fai clic sul nome del cluster, ad esempio test-cluster.

    3. Nella pagina Dettagli cluster, fai clic su Configurazioni.

    4. Copia il valore elencato in URL di bootstrap.

  3. Nella VM client, imposta la variabile di ambiente:

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

    Sostituisci BOOTSTRAP_URL con l'indirizzo di bootstrap copiato.

  4. Esegui il comando kafka-console-consumer.sh per leggere i messaggi:

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

    Sostituisci TOPIC_ID con il nome dell'argomento, ad esempio test-topic.

    La console mostra i record di dati di gioco sintetici in streaming man mano che vengono utilizzati.

  5. Premi Ctrl+C per interrompere l'utilizzo dei messaggi.

Visualizzare in BigQuery

Per trasmettere i dati dall'argomento Kafka a BigQuery e visualizzare i record:

  1. Poiché i dati sintetici sono JSON non elaborati, devi creare manualmente la tabella di destinazione in BigQuery prima di creare il connettore. Per informazioni su come creare una tabella, consulta Creare una tabella vuota con una definizione dello schema. Crea una tabella denominata test-topic nel set di dati con il seguente schema:

    [
      {"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. Crea un connettore di sink BigQuery in un cluster Connect per trasmettere i messaggi dall'argomento alla tabella BigQuery. Quando configuri il connettore, utilizza le seguenti proprietà di esempio, sostituendo PROJECT_ID con il tuo ID progetto:

    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. Dopo che il connettore ha iniziato a trasmettere i dati, vai alla pagina BigQuery nella Google Cloud console.

    Vai a BigQuery

  4. Nel riquadro Spazio di esplorazione, espandi l'ID progetto e seleziona il set di dati, test_dataset.

  5. Fai clic sul nome della tabella, test-topic.

  6. Fai clic sulla scheda Anteprima per visualizzare i record sintetici in streaming. In alternativa, fai clic su Crea una nuova query ed esegui la seguente query SQL:

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

    Sostituisci quanto segue:

    • PROJECT_ID: il tuo ID progetto
    • DATASET_ID: l'ID del set di dati, ad esempio test_dataset
    • TABLE_ID: l'ID della tabella, ad esempio test-topic
  7. Fai clic su Esegui per visualizzare i record di esempio nel riquadro Risultati query.

    Nota:non utilizzare una query SELECT COUNT(*) per verificare i record. Poiché il connettore utilizza l'API BigQuery Streaming, i dati vengono inizialmente scritti in un buffer di streaming. Sebbene i dati siano immediatamente visibili utilizzando SELECT *, l'aggiornamento dei conteggi delle righe può richiedere diversi minuti.

Libera spazio

Per evitare che al tuo Google Cloud account vengano addebitati costi relativi alle risorse utilizzate in questa pagina, segui questi passaggi.

  1. Nella Google Cloud console, vai alla pagina Job Dataflow.

    Vai a Job Dataflow

  2. Fai clic sul nome del job creato per l'argomento.

  3. Fai clic su Arresta.

  4. Seleziona Annulla, quindi fai clic su Arresta job.

  5. (Facoltativo) Se non hai più bisogno del cluster Kafka, vai alla pagina Cluster Managed Service per Apache Kafka , seleziona test-cluster e fai clic su Elimina.

Passaggi successivi