Kafkactl, un outil magique
Manageant quelques clusters Kafka, je devais effectuer quelques opérations de maintenance sur notre cluster, ajuster le nombre de replicas des topics...
Si vous êtes familiers avec l'univers Kafka, vous savez à quel point ces opérations sont chiantes.
Il y'a peu, j'ai découvert un outil changeant ma manière de travailler avec Kafka, kafkactl. Son nom n'est pas sans vous rappeler le binary kubectl
, et c'est normal. Tout comme ce dernier, il est écrit en go et possède les même notions (Utilisation de contexts, keyword get/describe)...
Sous mac, l'installer est d'une simplicité enfantine
# install tap repostory once
brew tap deviceinsight/packages
# install kafkactl
brew install deviceinsight/packages/kafkactl
Et son utilisation l'est tout autant. Tout se passe dans un seul fichier de configuration :
➜ ~ \cat ~/.config/kafkactl/config.yml
contexts:
cluster1:
brokers:
- cluster1-eu3-1.mydomain.tld:9092
- cluster1-eu3-2.mydomain.tld:9092
- cluster1-eu3-3.mydomain.tld:9092
cluster2:
brokers:
- cluster2-eu5-1.mydomain.tld:9092
- cluster2-eu5-2.mydomain.tld:9092
- cluster2-eu5-3.mydomain.tld:9092
current-context: cluster1
Beaucoup d'autres paramètres sont disponibles, n'hésitez pas à consulter la documentation
Et tout comme kubectl, il ne faut pas oublier de source l'autocompletion, à ajouter dans ton .zshrc (ou tout autre)
L'utilisation des contextes est comme sur Kube
➜ ~ kafkactl config get-contexts
ACTIVE NAME
* cluster1
cluster2
➜ ~ kafkactl config use-context cluster2
➜ ~ kafkactl config get-contexts
ACTIVE NAME
cluster1
* cluster2
Une fois tout configuré, voici les principales fonctionnalités dont je me sers :
Afin de voir les futures modifications (--validate-only). Si elles vous conviennent, enlever le paramètre
Et pour avoir les détails d'un consumer group
kafkactl describe consumer-group "my-consumer-group"
CLIENT_HOST CLIENT_ID TOPIC ASSIGNED_PARTITIONS
/1.2.3.21 rdkafka topica 44,45,46,47,48,49,50,51,52,53
/1.2.3.21 rdkafka topicb 44,45,46,47,48,49,50,51,52,53
/1.2.3.16 rdkafka topica 22,23,24,25,26,27,28,29,30,31,32
/1.2.3.16 rdkafka topicb 22,23,24,25,26,27,28,29,30,31,32
/1.2.3.39 rdkafka topica 0,1,2,3,4,5,6,7,8,9,10
/1.2.3.39 rdkafka topicb 0,1,2,3,4,5,6,7,8,9,10
/1.2.3.34 rdkafka topica 11,12,13,14,15,16,17,18,19,20,21
/1.2.3.34 rdkafka topicb 11,12,13,14,15,16,17,18,19,20,21
/1.2.3.26 rdkafka topica 54,55,56,57,58,59,60,61,62,63
/1.2.3.26 rdkafka topicb 54,55,56,57,58,59,60,61,62,63
/1.2.3.20 rdkafka topica 33,34,35,36,37,38,39,40,41,42,43
/1.2.3.20 rdkafka topicb 33,34,35,36,37,38,39,40,41,42,43
Le gain de temps par rapport a une WebUI est phénoménale