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
- Ve a la página Managed Service para Apache Kafka > Clústeres.
- Haz clic en Crear.
- En el cuadro Nombre del clúster, ingresa un nombre para el clúster.
- En la lista Región, selecciona una ubicación para el clúster.
-
En Configuración de red, configura la subred en la que se puede acceder al clúster:
- En Proyecto, selecciona tu proyecto.
- En Red, selecciona la red de VPC.
- En Subred, selecciona la subred.
- Haz clic en Listo.
- 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 KafkaREGION: la ubicación del clústerPROJECT_ID: el ID del proyectoSUBNET_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:
- Programador de Dataflow (
roles/dataflow.developer) - Administrador de IAM de proyecto (
roles/resourcemanager.projectIamAdmin)
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:
- Trabajador de Dataflow (
roles/dataflow.worker) - Cliente de Kafka administrado (
roles/managedkafka.client)
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:
En la Google Cloud consola de, ve a la página Managed Service para Apache Kafka > Clústeres.
Haz clic en el nombre de tu clúster, como
test-cluster.Selecciona la pestaña Fuentes.
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.
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:- En la lista desplegable Tema de Kafka, haz clic en Crear tema. Se abrirá el panel Crear tema.
- En el campo Nombre del tema, ingresa
test-topic. - Conserva los valores predeterminados para Cantidad de particiones (
3) y Factor de replicación (3). - Haz clic en Crear.
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.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)
- Trabajador de Dataflow (
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.
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:
En la página Detalles del clúster de
test-cluster, haz clic en la pestaña Monitoring.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:
Conéctate a la VM del cliente mediante SSH. Si no configuraste una VM del cliente, consulta Crea una VM del cliente.
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:
En la Google Cloud consola de, ve a la página Managed Service para Apache Kafka > Clústeres.
Haz clic en el nombre de tu clúster, como
test-cluster.En la página Detalles del clúster, haz clic en Configuraciones.
Copia el valor que aparece en URL de arranque.
En tu VM del cliente, configura la variable de entorno:
```sh export BOOTSTRAP="BOOTSTRAP_URL" ```Reemplaza
BOOTSTRAP_URLpor la dirección de arranque copiada.Ejecuta el comando
kafka-console-consumer.shpara leer mensajes:kafka-console-consumer.sh \ --bootstrap-server $BOOTSTRAP \ --topic TOPIC_ID \ --from-beginning \ --consumer.config client.propertiesReemplaza 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.
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:
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-topicen 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"} ]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_IDpor 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=falseDespués de que el conector comience a transmitir datos, ve a la página BigQuery en la Google Cloud consola.
En el panel Explorador, expande el ID del proyecto y selecciona tu conjunto de datos,
test_dataset.Haz clic en el nombre de la tabla,
test-topic.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
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 conSELECT *, 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.
En la Google Cloud consola de, ve a la página Trabajos de Dataflow.
Haz clic en el nombre del trabajo creado para tu tema.
Haz clic en Detener.
Selecciona Cancelar y, luego, haz clic en Detener trabajo.
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-clustery haz clic en Borrar.