Générer des données synthétiques pour un cluster Managed Service pour Apache Kafka
Découvrez comment générer des données de test synthétiques pour un cluster Google Cloud Managed Service pour Apache Kafka à l'aide de la Google Cloud console.
Ce guide utilise le modèle de générateur de flux de données Dataflow pour publier automatiquement des exemples de données de télémétrie de jeu dans un sujet Managed Service pour Apache Kafka. Le générateur de flux de données est un modèle Dataflow qui génère des enregistrements de test synthétiques basés sur un schéma spécifié à un rythme configurable. La génération de données synthétiques vous permet d'observer l'activité du cluster, de tester la gestion de la charge et de vérifier les métriques de surveillance sans installer de client Kafka local ni écrire de code producteur personnalisé. Pour en savoir plus sur le modèle, consultez la page Modèle de générateur de flux de données Dataflow.
Avant de commencer
Avant de commencer ce tutoriel, créez un cluster Managed Service pour Apache Kafka. Si vous disposez déjà d'un cluster, vous pouvez ignorer cette étape. Pour en savoir plus sur les rôles et autorisations requis pour créer un cluster, consultez Créer et afficher un cluster. Si vous suivez ce guide, ne complétez que la section Créer un cluster avant de revenir à ce guide.
Créer un cluster
Console
- Accédez à la page Managed Service pour Apache Kafka > Clusters.
- Cliquez sur Créer.
- Dans le champ Nom du cluster, saisissez un nom pour le cluster.
- Dans la liste Région, sélectionnez un emplacement pour le cluster.
-
Pour Configuration réseau, configurez le sous-réseau où le cluster est accessible :
- Pour Project (Projet), sélectionnez votre projet.
- Sous Network (Réseau), sélectionnez le réseau VPC.
- Pour Subnet (Sous-réseau), sélectionnez le sous-réseau.
- Cliquez sur OK.
- Cliquez sur Créer.
Une fois que vous avez cliqué sur Créer, l'état du cluster est Creating. Lorsque le cluster
est prêt, l'état est Active.
gcloud
Pour créer un cluster Kafka, exécutez la
managed-kafka clusters
create commande.
gcloud managed-kafka clusters create KAFKA_CLUSTER \ --location=REGION \ --cpu=3 \ --memory=3GiB \ --subnets=projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \ --async
Remplacez les éléments suivants :
KAFKA_CLUSTER: nom du cluster Kafka.REGION: emplacement du cluster.PROJECT_ID: ID du projet.SUBNET_NAME: sous-réseau dans lequel vous souhaitez créer le cluster, par exempledefault.
Pour en savoir plus sur les emplacements compatibles, consultez Emplacements Managed Service pour Apache Kafka.
La commande s'exécute de manière asynchrone et renvoie un ID d'opération :
Check operation [projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID] for status.
Pour suivre la progression de l'opération de création, utilisez la
gcloud managed-kafka
operations describe commande :
gcloud managed-kafka operations describe OPERATION_ID \ --location=REGION
Lorsque le cluster est prêt, la sortie de cette commande inclut l'entrée state:
ACTIVE. Pour en savoir plus, consultez
Surveiller l'opération de création du cluster.
Rôles requis
Pour obtenir les autorisations nécessaires pour générer des données synthétiques pour un cluster, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet :
- Développeur Dataflow (
roles/dataflow.developer) - Administrateur de projet IAM (
roles/resourcemanager.projectIamAdmin)
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Ces rôles prédéfinis contiennent les autorisations requises pour générer des données synthétiques pour un cluster. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour générer des données synthétiques pour un cluster :
-
dataflow.jobs.create -
dataflow.jobs.get -
managedkafka.clusters.get -
managedkafka.topics.get -
managedkafka.topics.create -
managedkafka.topics.publish -
resourcemanager.projects.setIamPolicy
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Pour vous assurer que le compte de service Compute Engine par défaut dispose des autorisations nécessaires pour exécuter le job Dataflow, demandez à votre administrateur d'attribuer les rôles IAM suivants au compte de service Compute Engine par défaut sur le projet :
- Nœud de calcul Dataflow (
roles/dataflow.worker) - Client Managed Kafka (
roles/managedkafka.client)
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Votre administrateur peut également attribuer au compte de service Compute Engine par défaut les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
Si vous disposez des autorisations nécessaires pour attribuer des rôles IAM, la Google Cloud console vous invite à attribuer les rôles requis lors du processus de génération de données synthétiques. Si vous n'êtes pas autorisé à attribuer des rôles, la console affiche un message vous demandant de demander à un administrateur d'accorder les autorisations requises.
Générer des données synthétiques
Pour créer et lancer le job Dataflow qui génère des données synthétiques pour votre sujet Kafka :
Dans la Google Cloud console, accédez à la page Managed Service pour Apache Kafka > Clusters.
Cliquez sur le nom de votre cluster, par exemple
test-cluster.Sélectionnez l'onglet Sources.
Sur la page Sources, dans la fiche Générer des données synthétiques, cliquez sur Créer un job Dataflow. Le volet Produire des données s'ouvre.
Dans le volet Produire des données, sélectionnez un sujet dans la liste déroulante Sujet Kafka, par exemple
test-topic. Si vous n'avez pas de sujet, créez-en un :- Dans la liste déroulante Sujet Kafka, cliquez sur Créer un sujet. Le volet Créer un sujet s'ouvre.
- Dans le champ Nom du sujet, saisissez
test-topic. - Conservez les valeurs par défaut pour Nombre de partitions (
3) et Facteur de réplication (3). - Cliquez sur Créer.
Dans le champ Débit de sortie (RPS), saisissez le nombre de requêtes par seconde que vous souhaitez que le générateur produise, par exemple
100. Vous pouvez ainsi tester la façon dont votre cluster gère différentes charges.Si un avertissement s'affiche indiquant que votre compte de service Dataflow ne dispose pas des autorisations nécessaires, cliquez sur Attribuer pour attribuer les rôles suivants :
- Nœud de calcul Dataflow (
roles/dataflow.worker) - Client Managed Kafka (
roles/managedkafka.client)
- Nœud de calcul Dataflow (
Dans le volet Produire des données, cliquez sur Créer pour lancer le job Dataflow.
Une notification s'affiche indiquant que le job Dataflow a été créé.
Dans la notification, cliquez sur Afficher le job pour ouvrir la page Détails du job Dataflow , où vous pouvez observer le graphique du job, son état et les métriques d'exécution.
Afficher les métriques du cluster
Une fois le job Dataflow démarré, observez les données synthétiques qui arrivent dans votre cluster :
Sur la page Détails du cluster pour
test-cluster, cliquez sur l'onglet Surveillance.Consultez les graphiques Débits d'octets et 5 principaux sujets en fonction du débit de production pour vérifier que des données sont activement produites dans votre sujet.
Afficher les messages
Vérifiez que des messages synthétiques sont publiés dans votre sujet à l'aide de l'une des méthodes suivantes.
Afficher dans les outils de ligne de commande Kafka
Pour consommer des messages directement depuis votre cluster à l'aide des outils CLI Kafka sur une VM cliente :
Connectez-vous à votre VM cliente à l'aide de SSH. Si vous n'avez pas configuré de VM cliente, consultez Créer une VM cliente.
Obtenez l'adresse du serveur d'amorçage de votre cluster à partir de la Google Cloud console et définissez-la comme variable d'environnement sur votre VM cliente :
Dans la Google Cloud console, accédez à la page Managed Service pour Apache Kafka > Clusters.
Cliquez sur le nom de votre cluster, par exemple
test-cluster.Sur la page Détails du cluster, cliquez sur Configurations.
Copiez la valeur listée sous URL d'amorçage.
Sur votre VM cliente, définissez la variable d'environnement :
```sh export BOOTSTRAP="BOOTSTRAP_URL" ```Remplacez
BOOTSTRAP_URLpar l'adresse d'amorçage que vous avez copiée.Exécutez la commande
kafka-console-consumer.shpour lire les messages :kafka-console-consumer.sh \ --bootstrap-server $BOOTSTRAP \ --topic TOPIC_ID \ --from-beginning \ --consumer.config client.propertiesRemplacez TOPIC_ID par le nom du sujet, par exemple
test-topic.La console affiche les enregistrements de données de jeu synthétiques en streaming au fur et à mesure de leur consommation.
Appuyez sur Ctrl+C pour arrêter la consommation de messages.
Afficher dans BigQuery
Pour diffuser des données de votre sujet Kafka dans BigQuery et afficher les enregistrements :
Étant donné que les données synthétiques sont au format JSON brut, vous devez créer manuellement la table de destination dans BigQuery avant de créer votre connecteur. Pour savoir comment créer une table, consultez Créer une table vide avec une définition de schéma. Créez une table nommée
test-topicdans votre ensemble de données avec le schéma suivant :[ {"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"} ]Créez un connecteur de récepteur BigQuery dans un cluster Connect pour diffuser des messages de votre sujet vers votre table BigQuery. Lorsque vous configurez le connecteur, utilisez les exemples de propriétés suivants, en remplaçant
PROJECT_IDpar l'ID de votre projet :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=falseUne fois que le connecteur a commencé à diffuser des données, accédez à la page BigQuery de la Google Cloud console.
Dans le panneau Explorateur, développez l'ID de votre projet et sélectionnez votre ensemble de données,
test_dataset.Cliquez sur le nom de la table,
test-topic.Cliquez sur l'onglet Aperçu pour afficher les enregistrements synthétiques diffusés. Vous pouvez également cliquer sur Saisir une nouvelle requête et exécuter la requête SQL suivante :
SELECT * FROM `PROJECT_ID.DATASET_ID.TABLE_ID` LIMIT 10;Remplacez les éléments suivants :
- PROJECT_ID : ID du projet.
- DATASET_ID : ID de votre ensemble de données, par exemple
test_dataset - TABLE_ID : ID de votre table, par exemple
test-topic.
Cliquez sur Exécuter pour afficher les exemples d'enregistrements dans le volet Résultats de la requête.
Remarque : N'utilisez pas de requête
SELECT COUNT(*)pour vérifier vos enregistrements. Étant donné que le connecteur utilise l'API BigQuery Streaming, les données sont initialement écrites dans un tampon de streaming. Bien que les données soient immédiatement visibles à l'aide deSELECT *, la mise à jour du nombre de lignes peut prendre plusieurs minutes.
Libérer de l'espace
Pour éviter que les ressources utilisées dans cette démonstration soient facturées sur votre Google Cloud compte pour les ressources utilisées sur cette page, procédez comme suit :
Dans la Google Cloud console, accédez à la page Jobs Dataflow.
Cliquez sur le nom du job créé pour votre sujet.
Cliquez sur Arrêter.
Sélectionnez Annuler, puis cliquez sur Arrêter le job.
Facultatif : Si vous n'avez plus besoin du cluster Kafka, accédez à la page Clusters Managed Service pour Apache Kafka , sélectionnez
test-cluster, puis cliquez sur Supprimer.