+33 6 74 52 84 16 contact@lmvi.eu

Apache Kafka : domptez la rétention des messages en quelques commandes !

📈 Introduction

Aujourd’hui, avec Marius, mon pote robot préféré, on vous guide à travers la politique de rétention des messages dans Apache Kafka. Il y a plusieurs options qui permettent de contrôler la durée ou la taille des messages qui doivent être conservés.

Si vous utilisez Kafka dans un environnement Docker et que vous voulez savoir comment vérifier et modifier ces paramètres, cet article est fait pour vous.

🤖 Marius : La rétention des messages est cruciale pour équilibrer performance et stockage dans Kafka. Un bon réglage évite la surcharge des disques et garantit une consommation efficace des données !

C’est parti, on vous embarque ! 🚀

Bonjour !

Je suis Jean-Marc HENRY, ingénieur ESI,  consultant IT/IS pour les entreprises depuis plus de 35 ans, et fondateur de LMVI Conseil.

À travers ce blog, je vous propose d’explorer ensemble tous les 15 jours les grands ou petits (!) sujets de l’informatique.

Ici, on parlera de sujets qui me servent quotidiennement et qui me tiennent à cœur, comme le Nocode, l’IA, l’IT, l’IS ou l’architecture logicielle et un peu WSO2.

D’ailleurs, je ne suis pas seul à rédiger ces billets !

Je suis accompagné de mon assistant IA prénommé Marius. C’est un bon pote d’Ollama et de ChatGPT (entre autres, car il a un sacré réseau !).

Il est assez secret et ne me dit pas tout sur la manière dont il m’aide à écrire mes articles. En revanche, je ne publie rien qui n’ait été validé par des sources sûres ou testé !

C’est parti, on vous embarque !

Qu’est-ce qu’Apache Kafka ?

 

Apache Kafka est une plateforme distribuée de diffusion de données en continu conçue pour gérer des flux massifs de données en temps réel.

Initialement développée par LinkedIn et devenue open-source sous la fondation Apache, Kafka permet de publier, stocker, traiter et consommer des messages de manière fiable et évolutive.

Grâce à son architecture basée sur un log distribué, il est particulièrement utilisé pour la collecte de logs, l’intégration de données, l’analyse en temps réel et la communication entre microservices.

🔍 1. Vérifier la politique de rétention globale de Kafka

 

Kafka possède des paramètres globaux qui contrôlent la durée et la taille des logs avant suppression.

🛠️ Commande pour afficher les paramètres globaux de rétention du Broker Kafka :

    docker exec -it <nom_du_conteneur_kafka> kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --entity-name <nom_du_topic> --describe
    

    🛠️ Paramètres clés :

      • retention.ms : durée de rétention en millisecondes (604800000 = 7 jours).
      • retention.bytes : taille max du journal avant suppression.
      • cleanup.policy : delete (suppression automatique) ou compact (conserve uniquement le dernier message par clé).

      🤖 Marius : “log.retention.hours et log.retention.bytes fonctionnent ensemble. Kafka supprime les logs dès qu’un des deux seuils est atteint !”

      Paramètres à surveiller :

      • log.retention.hours : durée de rétention en heures (ex: 168 pour 7 jours).
      • log.retention.bytes : taille max des logs avant suppression.
      • log.cleanup.policy : politique de suppression (delete ou compact).

      🤖 Marius : “La rétention des messages est cruciale pour équilibrer performance et stockage dans Kafka. Un bon réglage évite la surcharge des disques et garantit une consommation efficace des données !

      🔍 2. Vérifier la rétention d’un topic spécifique

      Chaque topic Kafka peut avoir sa propre politique de rétention. Pour la consulter :

      docker exec -it <nom_du_conteneur_kafka> kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --entity-name <nom_du_topic> --alter --add-config retention.ms=259200000
      

      🏰️ 3. Modifier la Rétention d’un Topic

      Passer la rétention à 3 jours (72 heures)

      docker exec -it <nom_du_conteneur_kafka> kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --entity-name <nom_du_topic> --alter --add-config retention.ms=259200000
      

      ➡️ 259200000 ms = 72 heures = 3 jours

      🛠️ Activer la rétention compact


      docker exec -it <nom_du_conteneur_kafka> kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --entity-name <nom_du_topic> --alter --add-config cleanup.policy=compact
      

      ➡️ Kafka conservera uniquement la dernière valeur pour chaque clé unique.

      🛠️ Revenir à delete


      docker exec -it <nom_du_conteneur_kafka> kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --entity-name <nom_du_topic> --alter --add-config cleanup.policy=delete
      

      ➡️ Kafka supprimera les messages une fois la durée ou la taille dépassée.

      🤖 Marius : “Un topic peut avoir une rétention différente du paramètre global, ce qui permet d’adapter la gestion des données selon l’usage !”

      📄 4. Récapitulatif des Commandes

      🚀 Action

      🔍 Vérifier la rétention globale

      Commande

      docker exec -it <nom_du_conteneur_kafka> kafka-configs.sh --bootstrap-server localhost:9092 --entity-type brokers --entity-default --describe
      

      🔍 Vérifier la rétention globale

      docker exec -it <nom_du_conteneur_kafka> kafka-configs.sh --bootstrap-server localhost:9092 --entity-type brokers --entity-default --describe
      

      🔍 Vérifier la rétention d’un topic

      docker exec -it <nom_du_conteneur_kafka> kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --entity-name <nom_du_topic> --describe
      

      Modifier la rétention à 3 jours

      docker exec -it <nom_du_conteneur_kafka> kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --entity-name <nom_du_topic> --alter --add-config retention.ms=259200000
      

      ♻️ Activer la rétention compact

      docker exec -it <nom_du_conteneur_kafka> kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --entity-name <nom_du_topic> --alter --add-config cleanup.policy=compact
      

      🗑️ Revenir à la rétention delete

      docker exec -it <nom_du_conteneur_kafka> kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --entity-name <nom_du_topic> --alter --add-config cleanup.policy=delete
      

      🏆 Conclusion

      Gérer la politique de rétention dans Kafka est essentiel pour optimiser le stockage et les performances. Je vous recommande de bien ajuster ces paramètres selon votre usage :

      • delete pour conserver les messages pendant une durée indéterminée.
      • compact pour assurer une cohérence à long terme des clés de message

      🚀 Astuce bonus : automatisez ces commandes en créant un script Bash pour gérer ces paramètres en dynamique !

      🤖 Marius : “Une bonne configuration de rétention vous évite des maux de tête liés à la saturation du stockage et améliore l’efficacité de Kafka !”

      💪 Partagez cet article avec votre équipe DevOps & Data Engineers ! Et si vous avez des questions, laissez un commentaire.

      ✨ Happy Kafka-ing !

      Qui sommes-nous ?

      LMVI-Conseil, fondé en 2023 par Jean-Marc Henry, Consultant Seniot IT IS,  est spécialisé dans l’accompagnement des entreprises vers des solutions technologiques innovantes.

      Avec près de trente-cinq ans d’expérience, nous combinons conseil stratégique et expertise technique pour répondre à vos défis numériques.