Vérifier l'identifiant des brokers
Pour récupérer les ID des brokers dans un cluster Kafka, exécutez cette commande :
kafka-broker-api-versions.sh --bootstrap-server kafka-broker:9092 | grep "id"
Lister et décrire les topics
Pour afficher tous les topics disponibles :
kafka-topics.sh --bootstrap-server kafka-broker:9092 --list
Pour obtenir des détails sur un topic spécifique :
kafka-topics.sh --bootstrap-server kafka-broker:9092 --describe --topic exemple_topic
Créer un nouveau topic
Création simple avec un nombre de partitions défini :
kafka-topics.sh --bootstrap-server kafka-node:9092 --create --topic nouveau_sujet --partitions 1
Création avec configuration avancée, comme la rétention et le facteur de réplication :
kafka-topics.sh --bootstrap-server kafka-node:9092 --create --topic sujet_test --config retention.ms=7200000 --replication-factor 3 --partitions 5
Calculer la taille d'un topic
Utilisez l'outil jq pour analyser les logs des répertoires. Assurez-vous d'avoir jq installé, par exemple depuis les releases officielles.
Exportez les informations des logs pour un broker et un topic donnés :
kafka-log-dirs.sh --bootstrap-server kafka-broker:9092 --describe --broker-list 1 --topic-list exemple_topic > sortie.json
Ensuite, extrayez et calculez la taille totale avec jq et awk :
jq .brokers[0].logDirs[].partitions[].size sortie.json | awk '{sum+=$1}END{print sum/1024/1024/1024}'
Gérer les groupes de consommateurs
Lister tous les groupes de consommateurs :
kafka-consumer-groups.sh --bootstrap-server kafka-node:9092 --list
Afficher les détails d'un groupe spécifique, en utilisant un fichier de configuraton si nécessaire :
kafka-consumer-groups.sh --command-config /chemin/vers/kafka_client_jaas.conf --bootstrap-server kafka-node:9092 --describe --group mon_groupe
Voir l'état et les détails de tous les groupes :
kafka-consumer-groups.sh --bootstrap-server kafka-node:9092 --describe --all-groups
Afficher les membres d'un groupe :
kafka-consumer-groups.sh --describe --members --group mon_groupe --bootstrap-server kafka-node:9092
Réinitialiser les offsets des consommateurs
La réinitialisation des offsets peut redistribuer les partitions aux consommateurs. Options cournates :
--to-earliest: déplace l'offset au début--to-latest: déplace l'offset à la fin--to-offset NUM: définit un offset spécifique--shift-by NUM: recule d'un certain nombre d'offsets--by-duration: recule en fonction du temps
Exemple pour réinitialiser à l'offset le plus récent :
kafka-consumer-groups.sh --bootstrap-server kafka-node:9092 --group mon_groupe --topic sujet_cible --reset-offsets --to-latest --execute
Les colonnes clés dans les rapports sont :
- CURRENT-OFFSET : offset actuel du consommateur
- LOG-END-OFFSET : dernier offset disponible dans la partition
- LAG : différence entre les deux, indiquant l'arriéré
Supprimer des topics et leurs données
Supprimer un topic :
kafka-topics.sh --bootstrap-server kafka-node:9092 --delete --topic topic_a_supprimer
Pour supprimer immédiatement les données d'un topic, ajustez la politique de nettoyage via ZooKeeper :
kafka-configs.sh --zookeeper zookeeper:2181 --alter --entity-name mon_topic --entity-type topics --add-config cleanup.policy=delete
Configurations dynamiques
Paramètres globaux dans server.properties :
log.retention.hours=48
log.cleanup.policy=delete
Configurer la rétention pour un topic spécifique, par exemple à 2 jours :
kafka-configs.sh --zookeeper zookeeper:2181 --alter --entity-name mon_topic --entity-type topics --add-config retention.ms=172800000
Pour vérifier la configuration :
kafka-configs.sh --zookeeper zookeeper:2181 --describe --entity-name mon_topic --entity-type topics