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 .
. , - , — ? - , -, — , )