Comprendre les outils en ligne de commande Kafka : Guide de référence CLI.

Libérez la puissance d'Apache Kafka grâce à ce guide de référence complet de l'interface en ligne de commande (CLI). Apprenez les commandes Kafka essentielles pour la gestion des sujets (`kafka-topics.sh`), l'envoi de messages (`kafka-console-producer.sh`), la consommation de données (`kafka-console-consumer.sh`), et l'inspection des groupes de consommateurs (`kafka-consumer-groups.sh`). Ce guide présente en détail les cas d'utilisation pratiques, les arguments et les meilleures pratiques pour une administration et un dépannage efficaces de Kafka.

39 vues

Comprendre les outils en ligne de commande de Kafka : Guide de référence CLI

Apache Kafka est une plateforme puissante de streaming d'événements distribuée qui permet des pipelines de données en temps réel à haut débit, tolérants aux pannes et évolutifs. Bien que Kafka puisse être géré et interagi de manière programmatique via ses API, ses outils d'interface en ligne de commande (CLI) offrent un moyen direct et efficace d'effectuer des tâches administratives essentielles, de gérer des sujets (topics), d'interagir avec les consommateurs (consumers) et de surveiller l'état du cluster. Ce guide fournit une référence complète des outils CLI Kafka les plus couramment utilisés, détaillant leur objectif, leurs arguments essentiels et leurs cas d'utilisation pratiques.

Comprendre ces outils est crucial pour les administrateurs Kafka, les développeurs et toute personne impliquée dans la gestion ou le dépannage des clusters Kafka. Ils permettent une inspection, une manipulation et un diagnostic rapides sans avoir besoin d'écrire des scripts ou des applications personnalisés pour chaque opération simple.

Outils CLI Kafka de base

Les distributions Kafka incluent généralement un répertoire bin/ contenant divers scripts et exécutables. Nous nous concentrerons sur les plus fréquemment utilisés pour gérer Kafka efficacement.

1. kafka-topics.sh

Cet outil est sans doute l'outil en ligne de commande le plus fréquemment utilisé. Il vous permet de créer, lister, décrire, supprimer, modifier et gérer les sujets (topics) Kafka. La gestion des sujets est fondamentale pour organiser les flux de données au sein de Kafka.

Sous-commandes et arguments courants :

  • --create : Crée un nouveau sujet.
  • --list : Liste tous les sujets du cluster.
  • --describe : Fournit des informations détaillées sur des sujets spécifiques.
  • --delete : Supprime un ou plusieurs sujets.
  • --alter : Modifie la configuration d'un sujet existant.
  • --topic <topic_name> : Spécifie le nom du sujet.
  • --partitions <num_partitions> : Définit le nombre de partitions pour un sujet (utilisé avec --create).
  • --replication-factor <factor> : Définit le facteur de réplication pour un sujet (utilisé avec --create).
  • --bootstrap-server <host:port> : Spécifie le courtier (broker) Kafka auquel se connecter.

Exemples :

  • Créer un sujet nommé my_topic avec 3 partitions et un facteur de réplication de 2 :
    bash kafka-topics.sh --create --topic my_topic --partitions 3 --replication-factor 2 --bootstrap-server kafka-broker-1:9092,kafka-broker-2:9092

  • Lister tous les sujets du cluster :
    bash kafka-topics.sh --list --bootstrap-server kafka-broker-1:9092

  • Décrire un sujet nommé my_topic :
    bash kafka-topics.sh --describe --topic my_topic --bootstrap-server kafka-broker-1:9092
    Cela affichera des détails tels que les partitions, le leader, les répliques et les ISR (répliques synchronisées, In-Sync Replicas).

  • Supprimer un sujet nommé old_topic :
    bash kafka-topics.sh --delete --topic old_topic --bootstrap-server kafka-broker-1:9092
    Note : La suppression de sujets doit être activée dans les configurations du courtier Kafka (delete.topic.enable=true).

2. kafka-console-producer.sh

Cet outil vous permet d'envoyer des messages vers un sujet Kafka à partir de l'entrée standard. Il est inestimable pour tester les producteurs, injecter des données d'exemple ou publier des messages manuellement.

Arguments courants :

  • --topic <topic_name> : Spécifie le sujet cible.
  • --bootstrap-server <host:port> : Spécifie le courtier Kafka auquel se connecter.
  • --property <key>=<value> : Permet de définir des propriétés du producteur (par exemple, key.serializer, value.serializer).
  • --producer-property <key>=<value> : Similaire à --property, mais spécifiquement pour les configurations côté producteur.

Exemples :

  • Envoyer des messages à my_topic :
    bash kafka-console-producer.sh --topic my_topic --bootstrap-server kafka-broker-1:9092
    Après avoir exécuté cette commande, vous pouvez taper des messages ligne par ligne. Appuyez sur Ctrl+C pour quitter.

  • Envoyer des messages avec des clés (format JSON) :
    bash kafka-console-producer.sh --topic my_topic --bootstrap-server kafka-broker-1:9092 --property parse.key=true --property key.separator=':'
    Vous pouvez maintenant taper des paires key:value, et Kafka les enverra avec la clé spécifiée.

3. kafka-console-consumer.sh

Cet outil s'abonne à un ou plusieurs sujets Kafka et affiche les messages qu'il reçoit sur la sortie standard. Il est essentiel pour tester les consommateurs, inspecter les données des sujets et déboguer les applications producteur/consommateur.

Arguments courants :

  • --topic <topic_name> : Spécifie le(s) sujet(s) à consommer.
  • --bootstrap-server <host:port> : Spécifie le courtier Kafka auquel se connecter.
  • --group-id <group_id> : Spécifie l'ID du groupe de consommateurs. Ceci est important pour gérer les offsets et permettre à plusieurs consommateurs de partager la charge de consommation.
  • --from-beginning : Lit les messages depuis le début du journal du sujet.
  • --offset <offset> : Commence la consommation à partir d'un offset spécifique.
  • --partition <partition_id> : Consomme à partir d'une partition spécifique.
  • --property <key>=<value> : Permet de définir des propriétés du consommateur (par exemple, value.deserializer).

Exemples :

  • Consommer tous les messages de my_topic :
    bash kafka-console-consumer.sh --topic my_topic --bootstrap-server kafka-broker-1:9092

  • Consommer les messages depuis le début de my_topic pour le groupe de consommateurs my_group :
    bash kafka-console-consumer.sh --topic my_topic --group-id my_group --from-beginning --bootstrap-server kafka-broker-1:9092

  • Consommer les messages avec affichage des offsets et des clés :
    bash kafka-console-consumer.sh --topic my_topic --bootstrap-server kafka-broker-1:9092 --property print.key=true --property key.separator="\t" --property print.offset=true --property print.headers=true

4. kafka-consumer-groups.sh

Cet outil est utilisé pour gérer et inspecter les groupes de consommateurs. Il est essentiel pour comprendre le retard de consommation (lag), réaffecter les partitions et dépanner les problèmes de consommation.

Sous-commandes et arguments courants :

  • --list : Liste tous les groupes de consommateurs du cluster.
  • --describe : Fournit des détails sur des groupes de consommateurs spécifiques, y compris le retard (lag).
  • --bootstrap-server <host:port> : Spécifie le courtier Kafka auquel se connecter.
  • --group <group_id> : Spécifie l'ID du groupe de consommateurs.
  • --reset-offsets : Réinitialise les offsets pour un groupe de consommateurs.
  • --topic <topic_name> : Spécifie le sujet pour la réinitialisation des offsets.
  • --to-earliest : Réinitialise les offsets au message le plus ancien disponible.
  • --to-latest : Réinitialise les offsets au message le plus récent disponible.
  • --execute : Exécute l'opération de réinitialisation des offsets.

Exemples :

  • Lister tous les groupes de consommateurs :
    bash kafka-consumer-groups.sh --list --bootstrap-server kafka-broker-1:9092

  • Décrire un groupe de consommateurs my_group et afficher son retard :
    bash kafka-consumer-groups.sh --describe --group my_group --bootstrap-server kafka-broker-1:9092
    La sortie affichera le sujet, la partition, l'offset actuel, l'offset de fin de journal (log end offset) et le retard (lag).

  • Réinitialiser les offsets pour my_group sur my_topic au message le plus ancien disponible :
    bash kafka-consumer-groups.sh --group my_group --topic my_topic --reset-offsets --to-earliest --execute --bootstrap-server kafka-broker-1:9092
    Utilisez cette commande avec prudence, car elle affecte l'endroit où les consommateurs commenceront à lire.

5. kafka-log-dirs.sh

Cet outil aide à inspecter les répertoires de journaux (log directories) sur les courtiers Kafka. Il peut être utile pour comprendre l'utilisation du disque et localiser les données des sujets.

Arguments courants :

  • --bootstrap-server <host:port> : Spécifie le courtier Kafka auquel se connecter.
  • --topic <topic_name> : Filtre la sortie pour afficher les répertoires d'un sujet spécifique.

Exemples :

  • Lister les répertoires de journaux sur un courtier :
    bash kafka-log-dirs.sh --bootstrap-server kafka-broker-1:9092

  • Afficher les répertoires de journaux pour un sujet spécifique :
    bash kafka-log-dirs.sh --bootstrap-server kafka-broker-1:9092 --topic my_topic

6. kafka-preferred-replica-election.sh

Ce script initie les élections de répliques préférées pour les sujets. Une réplique préférée est le courtier qui est choisi comme leader pour une partition en fonction de son facteur de réplication. Si un courtier tombe en panne et qu'une réplique non préférée devient le leader, cet outil peut être utilisé pour rétablir le leadership à la réplique préférée.

Arguments courants :

  • --topic <topic_name> : Spécifie le sujet pour lequel élire les répliques préférées.
  • --broker-list <broker_id1,broker_id2,...> : Spécifie une liste d'ID de courtiers séparés par des virgules.
  • --bootstrap-server <host:port> : Spécifie le courtier Kafka auquel se connecter.

Exemples :

  • Élire les répliques préférées pour my_topic :
    bash kafka-preferred-replica-election.sh --topic my_topic --bootstrap-server kafka-broker-1:9092

  • Élire les répliques préférées pour plusieurs sujets :
    bash kafka-preferred-replica-election.sh --topic topic1,topic2 --bootstrap-server kafka-broker-1:9092

Considérations importantes et meilleures pratiques

  • --bootstrap-server est la clé : Assurez-vous toujours de spécifier le bon argument --bootstrap-server pour vous connecter à votre cluster Kafka. Il s'agit généralement d'une liste host:port séparée par des virgules pour vos courtiers.
  • Environnement : Ces commandes se trouvent généralement dans le répertoire bin/ de votre installation Kafka. Vous devrez naviguer vers ce répertoire ou vous assurer que le répertoire bin de Kafka est inclus dans le PATH de votre système.
  • Permissions : Assurez-vous que l'utilisateur exécutant ces commandes dispose de l'accès réseau nécessaire pour atteindre les courtiers Kafka.
  • Configuration : De nombreux outils CLI peuvent accepter des configurations de client Kafka via les arguments --property ou --producer-property/--consumer-property. Ceci est utile pour remplacer les sérialiseurs/désérialiseurs par défaut ou définir d'autres configurations client spécifiques.
  • Sécurité : Pour les clusters Kafka sécurisés (par exemple, avec authentification SSL/TLS ou SASL), vous devrez transmettre des arguments supplémentaires liés à la sécurité (tels que --command-config pointant vers un fichier de propriétés client) à ces outils.
  • Suppression de sujet : N'oubliez pas que la suppression de sujet est une opération sensible et doit être explicitement activée dans le fichier server.properties du courtier Kafka en utilisant delete.topic.enable=true.

Conclusion

Les outils en ligne de commande de Kafka offrent une interface robuste et accessible pour gérer et interagir avec votre cluster Kafka. Maîtriser des outils comme kafka-topics.sh, kafka-console-producer.sh, kafka-console-consumer.sh et kafka-consumer-groups.sh est essentiel pour des opérations, un dépannage et un développement Kafka efficaces. En comprenant leurs arguments et leurs cas d'utilisation, vous pouvez considérablement rationaliser votre flux de travail et obtenir des informations plus approfondies sur votre infrastructure de streaming d'événements.

La référence régulière à ces commandes vous aidera non seulement à effectuer les tâches administratives quotidiennes, mais vous permettra également de diagnostiquer et de résoudre les problèmes plus efficacement. Au fur et à mesure que vous vous familiariserez avec Kafka, vous pourrez explorer d'autres scripts utilitaires disponibles dans le répertoire bin/ pour des opérations plus avancées.