Se um cliente com SDK não conseguir enviar ou receber mensagens nem se conectar a uma instância, use a ferramenta de verificação de integridade do Kafka para diagnosticar o problema. Essa ferramenta ajuda a identificar falhas de conectividade de rede e anomalias na instância. Se a instância estiver íntegra, revise o código do cliente e as configurações de rede para descartar problemas na aplicação.
Pré-requisitos
JDK 1.8 ou posterior instalado. Para mais informações, consulte Java Downloads.
Ferramenta de verificação de integridade baixada e extraída: kafka-checker.zip.
Tópico e grupo de consumidores criados para testar o envio e o consumo de mensagens. Para mais informações, consulte Criar recursos.
Testar a conectividade de rede
-
Obtenha um endpoint.
Faça login no console do ApsaraMQ for Kafka.
Na seção Overview da página Resource Distribution, selecione uma região.
Na página Instances, clique em nome da instância desejada.
-
Na página Instance Details, localize a seção Endpoint Information e obtenha o endpoint da instância.
Esta seção exibe três tipos de endpoints: VPC default endpoint (VPC, protocolo PLAINTEXT), Internet SSL endpoint (internet, protocolo SASL_SSL) e VPC SSL endpoint (VPC, protocolo SASL_PLAINTEXT). Copie o endereço do endpoint correspondente ao seu ambiente de rede.
NotaPara mais informações sobre as diferenças entre os endpoints, consulte Comparação de endpoints.
-
Use a ferramenta de verificação de integridade para testar a conectividade de rede com o endpoint. Os passos a seguir usam o sistema operacional Linux como exemplo.
-
Faça login no sistema Linux e acesse o diretório onde a ferramenta KafkaChecker.jar está localizada.
cd /usr/opt/kafka-checkerSubstitua
/usr/opt/kafka-checkerpelo caminho real. -
Execute o comando abaixo para testar a conectividade com a instância do ApsaraMQ for Kafka.
java -jar KafkaChecker.jar telnet -s <endpoint>Por exemplo, se o cliente se conecta ao ApsaraMQ for Kafka pelo endpoint padrão da VPC, execute o seguinte comando:
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.NotaAo usar um endpoint de VPC, certifique-se de que o cliente e a instância estejam na mesma VPC.
Se a saída for semelhante à apresentada a seguir, a conexão de rede funciona corretamente.
telnet xxx 9092 success telnet xxx 9092 success telnet xxx 9092 successSe uma mensagem semelhante à seguinte for exibida, a lista de permissões para acessar o ApsaraMQ for Kafka não está configurada. Para mais informações, consulte Configure uma lista de permissões.
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
-
Testar o envio de mensagens
O envio de mensagens gera dados de teste. Para evitar impactos nos dados de produção, crie um tópico dedicado às verificações de integridade.
Execute o comando correspondente ao método de conexão.
-
Conexão pelo endpoint padrão da VPC na porta 9092:
java -jar KafkaChecker.jar send -s <endpoint_domain:9092> --topic <topic_name>Exemplo:
java -jar KafkaChecker.jar send -s alikafka-pre-cn-zv**********-1-vpc.alikafka.aliyuncs.com:9092 --topic test -
Conexão pelo endpoint SSL da internet na porta 9093. Esta conexão requer autenticação SASL. Execute o comando correspondente ao mecanismo de autenticação utilizado.
NotaPara conexões pela internet, o usuário SASL padrão da instância usa o mecanismo PLAIN para autenticação.
Crie usuários SASL para obter controle de permissões mais granular e configure o mecanismo de autenticação como PLAIN ou SCRAM-SHA-256. Para mais informações, consulte Conceder permissões a usuários SASL. Execute o comando correspondente ao mecanismo de autenticação em uso.
Mecanismo PLAIN
java -jar KafkaChecker.jar send -sm PLAIN -ss true -u <username> -psw <password> -s <endpoint_domain:9093> --topic <topic_name>Exemplo:
java -jar KafkaChecker.jar send -sm PLAIN -ss true -u test -psw test**** -s alikafka-pre-cn-zv**********-1.alikafka.aliyuncs.com:9093 --topic testMecanismo 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>Exemplo:
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 -
Conexão pelo endpoint SSL da VPC na porta 9094. Esta conexão requer autenticação SASL. Execute o comando correspondente ao mecanismo de autenticação utilizado.
Mecanismo PLAIN
java -jar KafkaChecker.jar send -sm PLAIN -sp true -u <username> -psw <password> -s <endpoint_domain:9094> --topic <topic_name>Exemplo:
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 testMecanismo 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>Exemplo:
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
Uma saída semelhante à seguinte indica que as mensagens foram enviadas com sucesso:
[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
Testar o consumo de mensagens
Execute o comando correspondente ao método de conexão.
-
Conexão pelo endpoint padrão da VPC na porta 9092:
java -jar KafkaChecker.jar pull -s <endpoint_domain:9092> --topic <topic_name> --group <consumer_group_name> --partition 0 --offset 0 --count 10Exemplo:
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 -
Conexão pelo endpoint SSL da internet na porta 9093. Esta conexão requer autenticação SASL. Execute o comando correspondente ao mecanismo de autenticação usado para consumir mensagens.
NotaPara conexões pela internet, o usuário SASL padrão da instância usa o mecanismo PLAIN para autenticação.
Crie usuários SASL para obter controle de permissões mais granular e configure o mecanismo de autenticação como PLAIN ou SCRAM-SHA-256. Para mais informações, consulte Conceder permissões a usuários SASL. Execute o comando correspondente ao mecanismo de autenticação em uso.
Mecanismo 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 10Exemplo:
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 10Mecanismo 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 10Exemplo:
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 -
Conexão pelo endpoint SSL da VPC na porta 9094. Esta conexão requer autenticação SASL. Execute o comando correspondente ao mecanismo de autenticação usado para consumir mensagens.
Mecanismo 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 10Exemplo:
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 10Mecanismo 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 10Exemplo:
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
Uma saída semelhante à seguinte indica que as mensagens foram consumidas com sucesso:
[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
Referências
Para obter informações sobre os SDKs relevantes, consulte Visão geral do SDK.