Si un client utilisant un SDK ne parvient pas à envoyer ou recevoir des messages, ou à se connecter à une instance, utilisez l'outil de vérification de l'état de santé Kafka pour diagnostiquer le problème. Cet outil permet de détecter les problèmes de connectivité réseau et les anomalies au niveau de l'instance. Si l'instance est saine, vérifiez le code côté client et la configuration réseau afin d'exclure tout problème lié à votre application.
Prérequis
Le JDK 1.8 ou une version ultérieure doit être installé. Pour plus d'informations, consultez la page Java Downloads.
Téléchargez et extrayez l'outil de vérification de l'état de santé kafka-checker.zip.
Créez un topic et un groupe de consommateurs pour tester l'envoi et la consommation des messages. Pour plus d'informations, consultez la rubrique Création de ressources.
Tester la connectivité réseau
-
Récupérez un endpoint.
Connectez-vous à la console ApsaraMQ for Kafka.
Dans la section Overview de la page Resource Distribution, sélectionnez une région.
Sur la page Instances, cliquez sur le nom de l'instance cible.
-
Sur la page Instance Details, localisez la section Endpoint Information et récupérez l'endpoint de votre instance.
Cette section affiche trois types d'endpoints : VPC default endpoint (VPC, protocole PLAINTEXT), Internet SSL endpoint (Internet, protocole SASL_SSL) et VPC SSL endpoint (VPC, protocole SASL_PLAINTEXT). Copiez l'adresse de l'endpoint correspondant à votre environnement réseau.
RemarquePour plus d'informations sur les différences entre les endpoints, consultez la rubrique Comparaison des endpoints.
-
Testez la connectivité réseau vers l'endpoint à l'aide de l'outil de vérification de l'état de santé. Les étapes suivantes illustrent la procédure sur un système Linux.
-
Connectez-vous à votre système Linux et accédez au répertoire contenant l'outil KafkaChecker.jar.
cd /usr/opt/kafka-checkerRemplacez
/usr/opt/kafka-checkerpar le chemin réel. -
Exécutez la commande suivante pour tester la connectivité à l'instance ApsaraMQ for Kafka.
java -jar KafkaChecker.jar telnet -s <endpoint>Par exemple, si votre client se connecte à ApsaraMQ for Kafka via l'endpoint VPC par défaut, exécutez la commande suivante :
java -jar KafkaChecker.jar telnet -s alikafka-pre-cn-zv**********-1-vpc.alikafka.aliyuncs.com:9092,alikafka-pre-cn-zv**********-2-vpc.alikafka.aliyuncs.com:9092,alikafka-pre-cn-zv**********-3-vpc.alikafka.aliyuncs.com:9092.RemarqueLorsque vous utilisez un endpoint VPC, assurez-vous que votre client et l'instance se trouvent dans le même VPC.
Si la sortie ressemble à ce qui suit, la connexion réseau fonctionne correctement.
telnet xxx 9092 success telnet xxx 9092 success telnet xxx 9092 successSi un message similaire au suivant s'affiche, cela indique que la liste d'autorisation (whitelist) pour l'accès à ApsaraMQ for Kafka n'est pas configurée. Pour plus d'informations, consultez la rubrique Configuration d'une liste d'autorisation.
telnet xxx 9092 failure, please add ip to white list in Alikafka console telnet xxx 9092 failure, please add ip to white list in Alikafka console telnet xxx 9092 failure, please add ip to white list in Alikafka console
-
Tester l'envoi de messages
L'envoi de messages génère des données de test. Pour éviter d'impacter vos données de production, créez un topic dédié aux vérifications de l'état de santé.
Exécutez la commande correspondant à votre méthode de connexion.
-
Connexion via l'endpoint VPC par défaut sur le port 9092 :
java -jar KafkaChecker.jar send -s <endpoint_domain:9092> --topic <topic_name>Exemple :
java -jar KafkaChecker.jar send -s alikafka-pre-cn-zv**********-1-vpc.alikafka.aliyuncs.com:9092 --topic test -
Connexion via l'endpoint Internet SSL sur le port 9093. Cette connexion nécessite une authentification SASL. Exécutez la commande correspondant au mécanisme d'authentification utilisé.
RemarquePour les connexions via Internet, l'utilisateur SASL par défaut de l'instance utilise le mécanisme PLAIN pour l'authentification.
Vous pouvez créer des utilisateurs SASL pour un contrôle plus fin des permissions et configurer le mécanisme d'authentification sur PLAIN ou SCRAM-SHA-256. Pour plus d'informations, consultez la rubrique Attribution d'autorisations aux utilisateurs SASL. Vous devez exécuter la commande correspondant au mécanisme d'authentification utilisé.
Mécanisme PLAIN
java -jar KafkaChecker.jar send -sm PLAIN -ss true -u <username> -psw <password> -s <endpoint_domain:9093> --topic <topic_name>Exemple :
java -jar KafkaChecker.jar send -sm PLAIN -ss true -u test -psw test**** -s alikafka-pre-cn-zv**********-1.alikafka.aliyuncs.com:9093 --topic testMécanisme SCRAM-SHA-256
java -jar KafkaChecker.jar send -sm SCRAM-SHA-256 -ss true -u <username> -psw <password> -s <endpoint_domain:9093> --topic <topic_name>Exemple :
java -jar KafkaChecker.jar send -sm SCRAM-SHA-256 -ss true -u test -psw test**** -s alikafka-pre-cn-zv**********-1.alikafka.aliyuncs.com:9093 --topic test -
Connexion via l'endpoint VPC SSL sur le port 9094. Cette connexion nécessite une authentification SASL. Exécutez la commande correspondant au mécanisme d'authentification utilisé.
Mécanisme PLAIN
java -jar KafkaChecker.jar send -sm PLAIN -sp true -u <username> -psw <password> -s <endpoint_domain:9094> --topic <topic_name>Exemple :
java -jar KafkaChecker.jar send -sm PLAIN -sp true -u test -psw test**** -s alikafka-pre-cn-zv**********-1-vpc.alikafka.aliyuncs.com:9094 --topic testMécanisme SCRAM-SHA-256
java -jar KafkaChecker.jar send -sm SCRAM-SHA-256 -sp true -u <username> -psw <password> -s <endpoint_domain:9094> --topic <topic_name>Exemple :
java -jar KafkaChecker.jar send -sm SCRAM-SHA-256 -sp true -u test -psw test**** -s alikafka-pre-cn-zv**********-1-vpc.alikafka.aliyuncs.com:9094 --topic test
Une sortie similaire à celle ci-dessous indique que les messages ont été envoyés avec succès :
[2021-08-27 11:29:18.838]Produce ok number:0 p:2 offset:21 response:test-2@21 cost:1342 ms
[2021-08-27 11:29:19.252]Produce ok number:1 p:2 offset:22 response:test-2@22 cost:410 ms
[2021-08-27 11:29:19.254]Produce ok number:1 p:6 offset:9 response:test-6@9 cost:412 ms
[2021-08-27 11:29:19.301]Produce ok number:2 p:5 offset:25 response:test-5@25 cost:47 ms
[2021-08-27 11:29:19.302]Produce ok number:2 p:4 offset:20 response:test-4@20 cost:48 ms
[2021-08-27 11:29:19.347]Produce ok number:3 p:1 offset:19 response:test-1@19 cost:45 ms
[2021-08-27 11:29:19.348]Produce ok number:3 p:8 offset:17 response:test-8@17 cost:46 ms
Tester la consommation de messages
Exécutez la commande correspondant à votre méthode de connexion.
-
Connexion via l'endpoint VPC par défaut sur le port 9092 :
java -jar KafkaChecker.jar pull -s <endpoint_domain:9092> --topic <topic_name> --group <consumer_group_name> --partition 0 --offset 0 --count 10Exemple :
java -jar KafkaChecker.jar pull -s alikafka-pre-cn-zv**********-1-vpc.alikafka.aliyuncs.com:9092 --topic test --group test --partition 0 --offset 0 --count 10 -
Connexion via l'endpoint Internet SSL sur le port 9093. Cette connexion nécessite une authentification SASL. Exécutez la commande correspondant au mécanisme d'authentification utilisé pour consommer les messages.
RemarquePour les connexions via Internet, l'utilisateur SASL par défaut de l'instance utilise le mécanisme PLAIN pour l'authentification.
Vous pouvez créer des utilisateurs SASL pour un contrôle plus fin des permissions et configurer le mécanisme d'authentification sur PLAIN ou SCRAM-SHA-256. Pour plus d'informations, consultez la rubrique Attribution d'autorisations aux utilisateurs SASL. Vous devez exécuter la commande correspondant au mécanisme d'authentification utilisé.
Mécanisme PLAIN
java -jar KafkaChecker.jar pull -sm PLAIN -ss true -u <username> -psw <password> -s <endpoint_domain:9093> --topic <topic_name> --group <consumer_group_name> --partition 0 --offset 0 --count 10Exemple :
java -jar KafkaChecker.jar pull -sm PLAIN -ss true -u test -psw test**** -s alikafka-pre-cn-zv**********-1.alikafka.aliyuncs.com:9093 --topic test --group test --partition 0 --offset 0 --count 10Mécanisme SCRAM-SHA-256
java -jar KafkaChecker.jar pull -sm SCRAM-SHA-256 -ss true -u <username> -psw <password> -s <endpoint_domain:9093> --topic <topic_name> --group <consumer_group_name> --partition 0 --offset 0 --count 10Exemple :
java -jar KafkaChecker.jar pull -sm SCRAM-SHA-256 -ss true -u test -psw test**** -s alikafka-pre-cn-zv**********-1.alikafka.aliyuncs.com:9093 --topic test --group test --partition 0 --offset 0 --count 10 -
Connexion via l'endpoint VPC SSL sur le port 9094. Cette connexion nécessite une authentification SASL. Exécutez la commande correspondant au mécanisme d'authentification utilisé pour consommer les messages.
Mécanisme PLAIN
java -jar KafkaChecker.jar pull -sm PLAIN -sp true -u <username> -psw <password> -s <endpoint_domain:9094> --topic <topic_name> --group <consumer_group_name> --partition 0 --offset 0 --count 10Exemple :
java -jar KafkaChecker.jar pull -sm PLAIN -sp true -u test -psw test**** -s alikafka-pre-cn-zv**********-1-vpc.alikafka.aliyuncs.com:9094 --topic test --group test --partition 0 --offset 0 --count 10Mécanisme SCRAM-SHA-256
java -jar KafkaChecker.jar pull -sm SCRAM-SHA-256 -sp true -u <username> -psw <password> -s <endpoint_domain:9094> --topic <topic_name> --group <consumer_group_name> --partition 0 --offset 0 --count 10Exemple :
java -jar KafkaChecker.jar pull -sm SCRAM-SHA-256 -sp true -u test -psw test**** -s alikafka-pre-cn-zv**********-1-vpc.alikafka.aliyuncs.com:9094 --topic test --group test --partition 0 --offset 0 --count 10
Une sortie similaire à celle ci-dessous indique que les messages ont été consommés avec succès :
[2021-08-27 11:32:37.917]Pull Succ topic:test partition:0 offset:0 key:demo value: time:2021-08-10 15:08:10.629 cha:1455867288
[2021-08-27 11:32:37.918]Pull Succ topic:test partition:0 offset:1 key:demo value: time:2021-08-10 15:16:08.386 cha:1455389532
[2021-08-27 11:32:37.918]Pull Succ topic:test partition:0 offset:2 key:demo value: time:2021-08-10 15:16:50.374 cha:1455347544
[2021-08-27 11:32:37.918]Pull Succ topic:test partition:0 offset:3 key:null value: time:2021-08-18 21:08:23.532 cha:743054386
[2021-08-27 11:32:37.918]Pull Succ topic:test partition:0 offset:4 key:null value: time:2021-08-18 21:08:23.778 cha:743054140
[2021-08-27 11:32:37.918]Pull Succ topic:test partition:0 offset:5 key:null value: time:2021-08-18 21:08:23.892 cha:743054026
[2021-08-27 11:32:37.918]Pull Succ topic:test partition:0 offset:6 key:null value: time:2021-08-18 21:08:24.352 cha:743053566
[2021-08-27 11:32:37.919]Pull Succ topic:test partition:0 offset:7 key:null value: time:2021-08-18 21:08:24.452 cha:743053467
Références
Pour obtenir des informations sur les SDK pertinents, consultez la rubrique Présentation des SDK.