Création d'un client Kafka

Le client Kafka est une application qui vous permet d'interagir avec une grappe Kafka. Vous créez des applications de producteur pour envoyer des données aux sujets Kafka et aux applications de consommateur pour lire les messages des sujets Kafka.

Installation de Kafka

Sur chaque instance de calcul que vous créez, vous installez les bibliothèques et les outils clients Apache Kafka.

  1. Connectez-vous à l'instance de calcul que vous avez créée.
    ssh -i <private-key-file>
                                    <username>@<public-ip-address>
                                
  2. Apache Kafka nécessite Java. Installez Java dans l'instance de calcul, s'il n'est pas déjà installé. Vous pouvez vérifier si Java est installé en exécutant la commande version.
    java -version
    sudo yum install java-11-openjdk -y
  3. Téléchargez la version Apache Kafka que vous souhaitez installer à partir du serveur officiel Apache Kafka.
    wget https://downloads.apache.org/kafka/<version>/kafka_<version>.tgz
  4. Extraire l'ensemble téléchargé.
    tar -xzf kafka_<version>.tgz

Configuration du client

Sur chaque instance de calcul que vous créez, vous configurez le fichier de propriétés du client.

  1. Connectez-vous à l'instance de calcul que vous avez créée.
    ssh -i <private-key-file>
                                    <username>@<public-ip-address>
                                
  2. Accédez au répertoire config dans l'emplacement de la bibliothèque client Apache Kafka installée.
    cd kafka_<version>/config
  3. Créez un fichier nommé client.properties.
    nano client.properties
  4. Selon l'authentification que vous avez configurée pour la grappe Kafka, créez les paramètres de propriété de sécurité dans le fichier client.properties.
    • Pour l'authentification SASL/SCRAM
      security.protocol=SASL_SSL 
      sasl.mechanism=SCRAM-SHA-512 
      sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="<vault-username>" password="<vault-secret>"
    • Pour l'authentification mTLS
      security.protocol=SSL
      ssl.certificate.location=/leaf.cert
      ssl.key.location=/leaf.key
      ssl.keystore.password=<password>
      ssl.keystore.location=/kafka-keystore.p12

Utilisation de l'interface de ligne de commande Kafka

Après avoir installé et configuré l'application client, utilisez les outils d'interface de ligne de commande Apache Kafka intégrés pour gérer la grappe Kafka et interagir avec celle-ci dans le service de diffusion en continu avec Apache Kafka.

Apache Kafka comprend des clients intégrés. Par exemple, les clients Consommateur Java et Producteur Java.

De plus, la communauté Kafka fournit de nombreux autres clients que vous pouvez utiliser.

Voici quelques références rapides utiles :

Gérer la configuration du client

Les clients Kafka ont besoin de configurations spécifiques pour spécifier comment le client doit envoyer et recevoir des messages, gérer les erreurs et gérer sa connexion à la grappe Kafka.

Apache Kafka fournit des outils d'interface de ligne de commande dans le répertoire /bin. Par exemple, l'outil kafka-configs.sh disponible dans les bibliothèques client Kafka installées peut être utilisé pour gérer les configurations de client.

Voici quelques exemples de commandes d'interface de ligne de commande courantes. Obtenez les détails de la grappe pour l'URL d'amorçage dans les commandes. Spécifiez le chemin d'accès au fichier client.properties que vous avez créé lors de la configuration du client.

Affichage de la configuration du sujet

Pour voir la configuration d'un sujet, exécutez l'outil kafka-configs.sh en spécifiant le nom du sujet pour lequel vous voulez voir la configuration.

bin/kafka-configs.sh
--bootstrap-server $URL
--command-config /path/to/client.properties
--entity-type topics
--entity-name $TOPIC_NAME
                        --describe
                    
Affichage des informations de partition et de réplication pour tous les sujets

Pour voir les informations sur la partition et la réplication pour toutes les rubriques, exécutez l'outil kafka-configs.sh.

bin/kafka-configs.sh
--bootstrap-server $URL
--command-config /path/to/client.properties
                        --describe | grep Factor | sort 
                    
Modification de la configuration du sujet

Pour modifier la configuration d'un sujet, comme la conservation et le segment, exécutez l'outil kafka-configs.sh en spécifiant le nom du sujet pour lequel vous voulez modifier la configuration.

bin/kafka-configs.sh
--bootstrap-server $URL
--command-config /path/to/client.properties
--entity-type topics
--entity-name $TOPIC_NAME
                        --alter
--add-config retention.ms=1, segment.ms=60000
                    
Suppression de la configuration de sujet

Pour supprimer une configuration de sujet, telle que la conservation et le segment, exécutez l'outil kafka-configs.sh en spécifiant le nom du sujet pour lequel vous voulez supprimer la configuration.

bin/kafka-configs.sh
--bootstrap-server $URL
--command-config /path/to/client.properties
--entity-type topics
--entity-name $TOPIC_NAME
                        --alter
--delete-config retention.ms,segment.ms
                    
Affichage de l'utilisation du disque pour chaque partition

Pour voir l'utilisation du disque pour chaque partition, exécutez l'outil kafka-log-dirs.sh et spécifiez le chemin d'accès au fichier journal de sortie.

bin/kafka-log-dirs.sh
--bootstrap-server $URL
--command-config /path/to/client.properties
                        --describe | tail -1 > /tmp/logdirs.output.txt
                        
                    

Exécutez ensuite la commande suivante pour filtrer le fichier journal et afficher son contenu. Ajustez brokers[0] pour cibler un courtier spécifique.

cat /tmp/logdirs.output.txt
  | jq -r '.brokers[0] | .logDirs[0].partitions[] | .partition + " " + (.size|tostring)' 
  | sort 
  | awk 'BEGIN {sum=0} {sum+=$2} END {print sum}'
Activation du journal de trace

Pour activer le journal de suivi pour un courtier, créez un fichier log4j.properties avec les propriétés suivantes.

log4j.rootLogger=TRACE, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

Ensuite, exécutez la commande suivante.

export KAFKA_OPTS="-Dlog4j.configuration=file:/path/to/log4j.properties"

Surveillance des mesures du client

Vous devez surveiller les applications clients et la grappe Kafka.

Utilisez le service de surveillance pour OCI pour surveiller les mesures émises par les courtiers Kafka.

Pour les mesures côté client, vous devez créer votre propre tableau de bord personnalisé pour surveiller les applications client. Surveillez au minimum les mesures client suivantes :

  • record-send-rate
  • request-latency-avg
  • error-rate
  • records-consumed-rate
  • lag
  • fetch-latency-avg
  • Retries
  • disconnects