Je m'appelle Sergey Kalinets, je suis architecte chez Parimatch Tech, et dans cette publication je souhaite partager notre expérience dans le domaine de la recherche de messages à Kafka.
Pour notre entreprise, Kafka est le système nerveux central par lequel les microservices échangent des informations. De l'entrée à la sortie, un message peut passer par une dizaine de services qui le filtrent et le transforment, le transférant d'un sujet à un autre. Ces services appartiennent à différentes équipes et il peut être très utile de voir ce qui est contenu dans un message particulier. Ceci est particulièrement intéressant dans les cas où quelque chose ne se passe pas comme prévu - il est important de comprendre à quel stade tout s'est transformé en citrouille (enfin, qui doit le donner à la citrouille pour que cela ne se reproduise plus). À vol d'oiseau, la solution est simple: vous devez prendre les messages pertinents de la kafka et voir ce qui ne va pas avec eux. Mais, comme d'habitude, l'intéressant commence dans les détails.
Commençons par le fait que kafka n'est pas seulement un courtier de messages, comme beaucoup de gens le pensent et l'utilisent, mais aussi un journal distribué. Cela signifie beaucoup, mais ce qui nous intéresse, c'est que les messages ne sont pas supprimés des sujets une fois que les destinataires les ont lus, et techniquement, vous pouvez les relire à tout moment et voir ce qu'il y a à l'intérieur. Cependant, les choses sont compliquées par le fait que vous ne pouvez lire à partir de Kafka que séquentiellement. Nous devons connaître le décalage (pour simplifier, c'est le nombre ordinal dans le sujet) à partir duquel nous avons besoin des messages. Il est également possible de spécifier l'heure comme point de départ, mais vous ne pouvez alors lire que tous les messages dans l'ordre.
, , , , . , 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 .
. , - , — ? - , -, — , )