Ich muss einen Weg finden, Kafka nach einer Liste von Themen zu fragen. Ich weiß, dass ich das mit dem kafka-topics.sh
im bin\
Verzeichnis enthaltenen Skript tun kann . Sobald ich diese Liste habe, brauche ich alle Verbraucher pro Thema. Ich konnte weder ein Skript in diesem Verzeichnis noch eine Klasse in der kafka-consumer-api
Bibliothek finden, die es mir ermöglicht, dies zu tun.
Der Grund dafür ist, dass ich den Unterschied zwischen dem Offset des Themas und den Offsets der Verbraucher herausfinden muss.
Gibt es einen Weg, dies zu erreichen? Oder muss ich diese Funktionalität in jedem meiner Verbraucher implementieren?
Antworten:
Verwenden Sie kafka-consumer-groups.sh
Zum Beispiel
quelle
kafka-consumer-groups --topic
gilt nur für die Bereitstellung--reset-offsets
, daher müsste es ein anderes Flag geben, um einen API-Aufruf für "Gruppen für ein bestimmtes Thema" zu erstellenSie können dies für 0.9.0.0 verwenden. Version Kafka
um die von Ihnen erstellten Gruppen anzuzeigen. Dadurch werden alle Namen der Verbrauchergruppen angezeigt.
Details anzeigen
quelle
Mir ist klar, dass diese Frage jetzt fast 4 Jahre alt ist. Seitdem hat sich in Kafka viel geändert. Dies ist oben erwähnt, aber nur in kleinem Druck, daher schreibe ich dies für Benutzer, die so spät wie ich über diese Frage stolpern.
quelle
Alle Verbraucher pro Thema
(Ersetzen
--zookeeper
durch--bootstrap-server
, um Gruppen von neueren Kafka-Clients zu speichern.)Holen Sie sich alle Verbraucher pro Thema als Tabelle mit
topic
tabconsumer
:Machen Sie diese Paare einzigartig:
Holen Sie sich das gewünschte:
quelle
Kafka speichert alle Informationen im Zookeeper. Sie finden alle themenbezogenen Informationen unter Broker-> Themen . Wenn Sie alle Themen programmgesteuert abrufen möchten, können Sie dies mithilfe der Zookeeper-API tun.
Es wird ausführlich in den folgenden Links erklärt. Tutorialspoint , Zookeeper Programmer-Handbuch
quelle
Hochrangige Verbraucher sind bei Zookeeper registriert, sodass Sie eine Liste von ZK abrufen können, ähnlich wie beim Abrufen
kafka-topics.sh
der Themenliste. Ich glaube nicht, dass es eine Möglichkeit gibt, alle Verbraucher zu sammeln . Jede Anwendung, die einige Verbrauchsanforderungen sendet, ist tatsächlich ein "Verbraucher", und Sie können nicht feststellen, ob sie bereits ausgeführt wurden.Auf der Verbraucherseite gibt es eine JMX-Metrik zur Überwachung der Verzögerung . Es gibt auch einen Bau für die Verzögerungsüberwachung.
quelle
Ich sehe es hier nicht erwähnt, aber einen Befehl, den ich oft benutze und der mir hilft, alle Gruppen, Themen, Partitionen, Offsets, Verzögerungen, Verbraucher usw. Aus der Vogelperspektive zu betrachten
Ein Beispiel würde so aussehen:
Die wichtigste Säule ist die
LAG
, wo für eine gesunde Plattform, idealerweise sollte es sein0
(oder näher zu 0 oder eine geringe Anzahl für einen hohen Durchsatz) - zu allen Zeiten. Also stellen Sie sicher, dass Sie es überwachen !!! ;-).PS:
Einen interessanten Artikel darüber, wie Sie die Verzögerung überwachen können, finden Sie hier .
quelle
Sie können auch kafkactl dafür verwenden:
# get all consumer groups (output as yaml) kafkactl get consumer-groups -o yaml # get only consumer groups assigned to a single topic (output as table) kafkactl get consumer-groups --topic topic-a
Beispielausgabe (zB als Yaml):
name: my-group protocoltype: consumer topics: - topic-a - topic-b - topic-c
Haftungsausschluss: Ich bin an diesem Projekt beteiligt
quelle