Pesquisa em Kafka

Meu nome é Sergey Kalinets, sou arquiteto da Parimatch Tech e, nesta publicação, quero compartilhar nossa experiência no campo da pesquisa de mensagens em Kafka.





Para nossa empresa, Kafka é o sistema nervoso central por meio do qual microsserviços trocam informações. Da entrada à saída, uma mensagem pode passar por uma dezena de serviços que a filtram e transformam, transferindo-a de um tópico para outro. Esses serviços pertencem a equipes diferentes e pode ser muito útil ver o que está contido em uma mensagem específica. Isso é especialmente interessante nos casos em que algo não sai de acordo com o planejado - é importante entender em que estágio tudo virou abóbora (bem, quem precisa dar para a abóbora para que isso não aconteça novamente). Do ponto de vista de um pássaro, a solução é simples - você precisa pegar as mensagens relevantes do kafka e ver o que há de errado com elas. Mas, como sempre, o interessante começa nos detalhes.





Vamos começar com o fato de que o kafka não é apenas um corretor de mensagens, como muitas pessoas pensam e usam, mas também um log distribuído. Isso significa muito, mas o que nos interessa é que as mensagens não são retiradas dos tópicos depois que os destinatários as leem e, tecnicamente, você pode lê-las novamente a qualquer momento e ver o que há dentro. No entanto, as coisas são complicadas pelo fato de que você só pode ler Kafka sequencialmente. Precisamos saber o deslocamento (para simplificar, este é o número ordinal no tópico) a partir do qual precisamos de mensagens. Também é possível especificar a hora como ponto de partida, mas você ainda pode ler todas as mensagens em ordem.





, , , , . , id=42, , (playerId: 42), , , .





MySQL MSSQL, , Kafka ( ) .





. , . , « » « » — .





, , , . 





, ?





Kafka Tool

( https://www.kafkatool.com/features.html





, , GUI . , . , . , Kafka Tool , . ( ): «Not great not terrible».





, , . .





Kafka Console Consumer

, . . Kafka, JVM , Java. , Kafka Tool, Java — docker:





, docker run --rm -it taion809/kafka-cli:2.2.0, « , , , , , ».  





, , , . — , .





Kafkacat

, , . , , kafka-console-consumer ( ).





10 messages ( JSON):





- ., , kafkacat . 





( , ):





Kafka — Robin Moffatt. — kafkacat Kafka, kafkacat, . , , . .





. . , — - grep .





, kafkacat Avro , protobuf — . 





Kafka Connect + ELK

, . — . QA ( 90% ) Kafka Tool, — . , Kibana, UI Elasticsearch. Kibana QA . « , Kibana». , , , — Kafka Connect.





Kafka Connect — Kafka . ,  ( ?) Kafka . , — Connect JSON. «» , , — , , , — Kubernetes. 





Kafka Connect REST API, c , Kafka. , Elasticsearch :





HTTP PUT Connect, , , ElasticSinkConnector, Elastic. 





, , , . )





. , , , , - Elasticsearch. 





. , , . Kafka , . ? 





4 . , . , .





— .





Elasticsearch , . . / . — .





 

, Kibana , , . Kafka. , , UTC . , Elasticsearch timestamp, , index template, « — »: 





, , , . 





, , , , , Kibana, .





, Kafka Connect . , , , , . Kafka. — Kafka Elasticsearch. Elasticsearch, id . 





. , - , — ? - , -, — , )








All Articles