Genera datos sintéticos para un clúster de Managed Service para Apache Kafka

Aprende a generar datos de prueba sintéticos para un clúster de Google Cloud Managed Service para Apache Kafka con la Google Cloud consola de.

En esta guía, se usa la plantilla de Generador de datos de transmisión de Dataflow para publicar automáticamente datos de telemetría de juegos de muestra en un tema de Managed Service para Apache Kafka. El Generador de datos de transmisión es una plantilla de Dataflow que genera registros de prueba sintéticos basados en un esquema especificado a una velocidad configurable. La generación de datos sintéticos te permite observar la actividad del clúster, probar el manejo de cargas y verificar las métricas de supervisión sin instalar un cliente de Kafka local ni escribir código de productor personalizado. Para obtener más información sobre la plantilla, consulta Plantilla de Generador de datos de transmisión de Dataflow.

Antes de comenzar

Antes de comenzar este instructivo, crea un clúster nuevo de Managed Service para Apache Kafka. Si ya tienes un clúster, puedes omitir este paso. Para obtener información sobre los roles y permisos necesarios para crear un clúster, consulta Crea y visualiza un clúster. Si sigues esa guía, completa solo la sección Crea un clúster antes de volver a esta guía.

Cómo crear clústeres

Console

  1. Ve a la página Managed Service para Apache Kafka > Clústeres.

    Ir a los clústeres

  2. Haz clic en Crear.
  3. En el cuadro Nombre del clúster, ingresa un nombre para el clúster.
  4. En la lista Región, selecciona una ubicación para el clúster.
  5. En Configuración de red, configura la subred en la que se puede acceder al clúster:
    1. En Proyecto, selecciona tu proyecto.
    2. En Red, selecciona la red de VPC.
    3. En Subred, selecciona la subred.
    4. Haz clic en Listo.
  6. Haz clic en Crear.

Después de hacer clic en Crear, el estado del clúster es Creating. Cuando el clúster esté listo, el estado será Active.

gcloud

Para crear un clúster de Kafka, ejecuta el 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

Reemplaza lo siguiente:

  • KAFKA_CLUSTER: un nombre para el clúster de Kafka
  • REGION: la ubicación del clúster
  • PROJECT_ID: el ID del proyecto
  • SUBNET_NAME: la subred en la que deseas crear el clúster, por ejemplo, default

Para obtener información sobre las ubicaciones admitidas, consulta Ubicaciones de Managed Service para Apache Kafka.

El comando se ejecuta de forma asíncrona y muestra un ID de operación:

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

Para hacer un seguimiento del progreso de la operación de creación, usa el gcloud managed-kafka operations describe comando:

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

Cuando el clúster esté listo, el resultado de este comando incluirá la entrada state: ACTIVE. Para obtener más información, consulta Supervisa la operación de creación del clúster.

Roles obligatorios

Para obtener los permisos que necesitas para generar datos sintéticos para un clúster, pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Estos roles predefinidos contienen los permisos necesarios para generar datos sintéticos para un clúster. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para generar datos sintéticos para un clúster:

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

También puedes obtener estos permisos con roles personalizados o otros roles predefinidos.

Para garantizar que la cuenta de servicio predeterminada de Compute Engine tenga los permisos necesarios para ejecutar el trabajo de Dataflow, pídele a tu administrador que otorgue los siguientes roles de IAM a la cuenta de servicio predeterminada de Compute Engine en el proyecto:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Es posible que tu administrador también pueda otorgarle los permisos necesarios al agente de servicio predeterminado de Compute Engine mediante roles personalizados o cualquier otro rol predefinido.

Si tienes los permisos para otorgar roles de IAM, la Google Cloud consola te solicitará que otorgues los roles necesarios durante el proceso de generación de datos sintéticos. Si no tienes permiso para otorgar roles, la consola mostrará un mensaje en el que se te pedirá que solicites a un administrador que otorgue los permisos necesarios.

Genera datos sintéticos

Para crear y ejecutar el trabajo de Dataflow que genera datos sintéticos para tu tema de Kafka, haz lo siguiente:

  1. En la Google Cloud consola de, ve a la página Managed Service para Apache Kafka > Clústeres.

    Ir a los clústeres

  2. Haz clic en el nombre de tu clúster, como test-cluster.

  3. Selecciona la pestaña Fuentes.

  4. En la página Fuentes, en la tarjeta Generar datos sintéticos, haz clic en Crear un trabajo de Dataflow. Se abrirá el panel Producir datos.

  5. En el panel Producir datos, selecciona un tema de la lista desplegable Tema de Kafka, como test-topic. Si no tienes un tema, crea uno:

    1. En la lista desplegable Tema de Kafka, haz clic en Crear tema. Se abrirá el panel Crear tema.
    2. En el campo Nombre del tema, ingresa test-topic.
    3. Conserva los valores predeterminados para Cantidad de particiones (3) y Factor de replicación (3).
    4. Haz clic en Crear.
  6. En el campo Velocidad de salida (QPS), ingresa la velocidad de consultas por segundo que deseas que produzca el generador, como 100. Esto te permite probar cómo maneja tu clúster diferentes cargas.

  7. Si aparece una advertencia que indica que tu cuenta de servicio de Dataflow no tiene los permisos necesarios, haz clic en Otorgar para asignar los siguientes roles:

    • Trabajador de Dataflow (roles/dataflow.worker)
    • Cliente de Kafka administrado (roles/managedkafka.client)
  8. En el panel Producir datos, haz clic en Crear para iniciar el trabajo de Dataflow.

    Aparecerá una notificación que indica que se creó el trabajo de Dataflow.

  9. En la notificación, haz clic en Ver trabajo para abrir la página Detalles del trabajo de Dataflow , en la que puedes observar el gráfico del trabajo, el estado y las métricas de ejecución.

Visualiza las métricas del clúster

Después de que se inicie el trabajo de Dataflow, observa los datos sintéticos que fluyen hacia tu clúster:

  1. En la página Detalles del clúster de test-cluster, haz clic en la pestaña Monitoring.

  2. Revisa los gráficos Velocidades de bytes y Los 5 temas principales por capacidad de procesamiento de producción para verificar que los datos se produzcan de forma activa en tu tema.

Visualiza los mensajes

Verifica que los mensajes sintéticos se publiquen en tu tema con uno de los siguientes métodos.

Visualiza en las herramientas de línea de comandos de Kafka

Para consumir mensajes directamente desde tu clúster con las herramientas de la CLI de Kafka en una VM del cliente, haz lo siguiente:

  1. Conéctate a la VM del cliente mediante SSH. Si no configuraste una VM del cliente, consulta Crea una VM del cliente.

  2. Obtén la dirección del servidor de arranque de tu clúster desde la Google Cloud consola y configúrala como una variable de entorno en tu VM del cliente:

    1. En la Google Cloud consola de, ve a la página Managed Service para Apache Kafka > Clústeres.

      Ir a los clústeres

    2. Haz clic en el nombre de tu clúster, como test-cluster.

    3. En la página Detalles del clúster, haz clic en Configuraciones.

    4. Copia el valor que aparece en URL de arranque.

  3. En tu VM del cliente, configura la variable de entorno:

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

    Reemplaza BOOTSTRAP_URL por la dirección de arranque copiada.

  4. Ejecuta el comando kafka-console-consumer.sh para leer mensajes:

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

    Reemplaza TOPIC_ID por el nombre del tema, como test-topic.

    La consola muestra los registros de datos de juegos sintéticos de transmisión a medida que se consumen.

  5. Presiona Ctrl+C para dejar de consumir mensajes.

Ver en BigQuery

Para transmitir datos de tu tema de Kafka a BigQuery y ver los registros, haz lo siguiente:

  1. Dado que los datos sintéticos son JSON sin procesar, debes crear manualmente la tabla de destino en BigQuery antes de crear tu conector. Para obtener información sobre cómo crear una tabla, consulta Crea una tabla vacía con una definición de esquema. Crea una tabla llamada test-topic en tu conjunto de datos con el siguiente esquema:

    [
      {"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 conector receptor de BigQuery en un clúster de Connect para transmitir mensajes de tu tema a tu tabla de BigQuery. Cuando configures el conector, usa las siguientes propiedades de muestra y reemplaza PROJECT_ID por el ID de tu proyecto:

    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. Después de que el conector comience a transmitir datos, ve a la página BigQuery en la Google Cloud consola.

    Ir a BigQuery

  4. En el panel Explorador, expande el ID del proyecto y selecciona tu conjunto de datos, test_dataset.

  5. Haz clic en el nombre de la tabla, test-topic.

  6. Haz clic en la pestaña Vista previa para ver los registros sintéticos transmitidos. Como alternativa, haz clic en Redactar una nueva consulta y ejecuta la siguiente consulta en SQL:

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

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID del proyecto
    • DATASET_ID: el ID del conjunto de datos, como test_dataset
    • TABLE_ID: el ID de la tabla, como test-topic
  7. Haz clic en Ejecutar para ver los registros de muestra en el panel Resultados de la consulta.

    Nota: No uses una consulta SELECT COUNT(*) para verificar tus registros. Debido a que el conector usa la API de BigQuery Streaming, los datos se escriben inicialmente en un búfer de transmisión. Si bien los datos son visibles de inmediato con SELECT *, los recuentos de filas pueden tardar varios minutos en actualizarse.

Limpia

Sigue estos pasos para evitar que se apliquen cargos a tu Google Cloud cuenta de por los recursos que usaste en esta página.

  1. En la Google Cloud consola de, ve a la página Trabajos de Dataflow.

    Ir a Trabajos de Dataflow

  2. Haz clic en el nombre del trabajo creado para tu tema.

  3. Haz clic en Detener.

  4. Selecciona Cancelar y, luego, haz clic en Detener trabajo.

  5. Opcional: Si ya no necesitas el clúster de Kafka, ve a la página Clústeres de Managed Service para Apache Kafka , selecciona test-cluster y haz clic en Borrar.

¿Qué sigue?