Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to check whether Kafka Server is running?

I want to ensure whether kafka server is running or not before starting production and consumption jobs. It is in windows environment and here's my kafka server's code in eclipse...

Properties properties = new Properties(); properties.setProperty("broker.id", "1"); properties.setProperty("port", "9092"); properties.setProperty("log.dirs", "D://workspace//"); properties.setProperty("zookeeper.connect", "localhost:2181");   Option<String> option = Option.empty(); KafkaConfig config = new KafkaConfig(properties);        KafkaServer kafka = new KafkaServer(config, new CurrentTime(), option); kafka.startup(); 

In this case if (kafka != null) is not enough because it is always true. So is there any way to know that my kafka server is running and ready for producer. It is necessary for me to check this because it causes loss of some starting data packets.

like image 548
Khan Avatar asked Jun 20 '16 11:06

Khan


People also ask

How can I tell if Kafka server is running?

Use 'systemctl status kafka' to check the status.

How do I test a Kafka server?

To test Kafka APIs, you use the API Connection test step. To add it to a test case, you will need a ReadyAPI Test Pro license. If you do not have it, try a ReadyAPI trial.

How do you check Kafka is installed or not?

Via command line, you can navigate to /usr/hdp/current/kafka-broker/libs and see the jar files with the versions.


2 Answers

All Kafka brokers must be assigned a broker.id. On startup a broker will create an ephemeral node in Zookeeper with a path of /broker/ids/$id. As the node is ephemeral it will be removed as soon as the broker disconnects, e.g. by shutting down.

You can view the list of the ephemeral broker nodes like so:

echo dump | nc localhost 2181 | grep brokers

The ZooKeeper client interface exposes a number of commands; dump lists all the sessions and ephemeral nodes for the cluster.

Note, the above assumes:

  • You're running ZooKeeper on the default port (2181) on localhost, and that localhost is the leader for the cluster
  • Your zookeeper.connect Kafka config doesn't specify a chroot env for your Kafka cluster i.e. it's just host:port and not host:port/path
like image 59
Paul Carey Avatar answered Sep 18 '22 20:09

Paul Carey


I used the AdminClient api.

Properties properties = new Properties(); properties.put("bootstrap.servers", "localhost:9092"); properties.put("connections.max.idle.ms", 10000); properties.put("request.timeout.ms", 5000); try (AdminClient client = KafkaAdminClient.create(properties)) {     ListTopicsResult topics = client.listTopics();     Set<String> names = topics.names().get();     if (names.isEmpty())     {         // case: if no topic found.     }     return true; } catch (InterruptedException | ExecutionException e) {     // Kafka is not available } 
like image 21
Mohammad Faisal Avatar answered Sep 17 '22 20:09

Mohammad Faisal