2015-07-17 12 views
5

W mojej aplikacji wykonam pewnego rodzaju kontrolę stanu mojego kufrowskiego kufra.Jak zbudować skuteczną kontrolę zdrowia brokera Kafki?

Obecnie robię TopicMetadataRequest do wykrywania martwych brokerów:

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

Niestety to wywołanie generuje ogromny ruch sieciowy, ponieważ klastra topologii/ustawień.

Czy istnieje lepszy sposób na sprawdzenie brokerów kafka? Potrzebuję czegoś prostego, na przykład wskaźnika true/false.

+0

tylko myśl, ale to może być kwestia lepiej bazowana na serwerze wina? – nelsonda

Odpowiedz

3

Zdecydowanie polecam korzystanie z Menedżera Yahoo Kafka, który zawiera wszystkie informacje związane z konfiguracją Kafki. (np. bajty wysłane/zużyte w przedziale czasowym). To narzędzie może również służyć do zarządzania klastrem Kafka.

Ujawnia również Restful API i możesz spożywać te API w swojej aplikacji, jeśli to konieczne. Kliknij poniższy link, aby uzyskać do niego dostęp.

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

+0

Dziękuję. Jedynym problemem związanym z tą biblioteką jest to, że nie można jej używać jako projektu opartego na lib w moim projekcie. Musi być wdrożony osobno. Ale to jest miłe wspomnienie :) – leshkin

3

Można również użyć Heca API, aby otrzymać listę pośrednika następująco:

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;