2015-07-17 6 views
5

In meiner App werde ich eine Art Gesundheitscheck meines Kafka-Clusters durchführen.Wie erstellt man einen effizienten Kafka-Broker-Healthcheck?

Zur Zeit mache ich ein TopicMetadataRequest tot Makler zu erkennen:

Future { 
    // this will fail if Kafka is unavailable 
    consumer.send(new TopicMetadataRequest(Seq("health-check-topic"), 1)) 
    } 

Leider erzeugt dieser Aufruf ein riesiges Netzwerkverkehr, da die Cluster-Topologie/Einstellungen.

Gibt es eine bessere Möglichkeit, Kafka-Broker zu überprüfen? Was ich brauche, ist etwas einfaches wie true/false Indikator.

+0

nur ein Gedanke, aber könnte diese Frage besser auf Server Fehler homed werden? – nelsonda

Antwort

3

Ich würde Ihnen wärmstens empfehlen, Yahoo Kafka Manager zu verwenden, der alle Informationen im Zusammenhang mit Kafka-Setup bietet. (z.B. Bytes, die über ein Zeitintervall gesendet/verbraucht wurden). Dieses Tool kann auch zur Verwaltung Ihres Kafka-Clusters verwendet werden.

Es stellt auch Restful API zur Verfügung und Sie können diese API in Ihrer eigenen Anwendung verbrauchen, falls erforderlich. Folgen Sie dem folgenden Link, um darauf zuzugreifen.

https://github.com/yahoo/kafka-manager

+0

Danke. Das einzige Problem mit dieser Bibliothek ist, dass Sie sie nicht als Lib-Abhängigkeit in meinem Projekt verwenden können. Es muss separat bereitgestellt werden. Aber es ist eine nette Lib :) – leshkin

3

Sie verwenden auch Zookeeper API die Brokerliste wie folgt zu erhalten:

ZooKeeper zk = new ZooKeeper(KafkaContextLookupUtil.getZookeeperConnect().getZkConnect(), 10000, null); 
    List<String> ids = zk.getChildren("/brokers/ids", false); 
    List<Map> brokerList = new ArrayList<>(); 
    ObjectMapper objectMapper = new ObjectMapper(); 

    for (String id : ids) { 
     Map map = objectMapper.readValue(zk.getData("/brokers/ids/" + id, false, null), Map.class); 
     brokerList.add(map); 
    } 
    return brokerList; 
Verwandte Themen