kafka- python: как проверить, доступен ли заранее список брокеров вместо показа журналов ошибок - PullRequest
0 голосов
/ 12 марта 2020

Мой фрагмент выглядит следующим образом, и логика c - это если брокеры доступны, тогда производитель не None.

     try:
        self.producer = KafkaProducer(bootstrap_servers=broker_list)
     except kafka.errors.NoBrokersAvailable:
        self.producer = None

Но, таким образом, будет много логов печатается, если брокеры не доступны. Как я могу избежать этого?

2020-03-12 13:42:01 INFO <BrokerConnection node_id=bootstrap-1 host=device2:9092 <connecting> [IPv4 ('192.168.0.102', 9092)]>: connecting to device2:9092 [('192.168.0.102', 9092) IPv4]
2020-03-12 13:42:01 INFO Probing node bootstrap-1 broker version
2020-03-12 13:42:01 ERROR Connect attempt to <BrokerConnection node_id=bootstrap-1 host=device2:9092 <connecting> [IPv4 ('192.168.0.102', 9092)]> returned error 111. Disconnecting.
2020-03-12 13:42:01 INFO <BrokerConnection node_id=bootstrap-1 host=device2:9092 <connecting> [IPv4 ('192.168.0.102', 9092)]>: Closing connection. KafkaConnectionError: 111 ECONNREFUSED
2020-03-12 13:42:01 INFO <BrokerConnection node_id=bootstrap-1 host=device2:9092 <connecting> [IPv4 ('192.168.0.102', 9092)]>: connecting to device2:9092 [('192.168.0.102', 9092) IPv4]
2020-03-12 13:42:01 ERROR Connect attempt to <BrokerConnection node_id=bootstrap-1 host=device2:9092 <connecting> [IPv4 ('192.168.0.102', 9092)]> returned error 111. Disconnecting.
2020-03-12 13:42:01 INFO <BrokerConnection node_id=bootstrap-1 host=device2:9092 <connecting> [IPv4 ('192.168.0.102', 9092)]>: Closing connection. KafkaConnectionError: 111 ECONNREFUSED
2020-03-12 13:42:01 INFO <BrokerConnection node_id=bootstrap-0 host=device1:9092 <connecting> [IPv4 ('192.168.0.101', 9092)]>: connecting to device1:9092 [('192.168.0.101', 9092) IPv4]

Ответы [ 2 ]

0 голосов
/ 12 марта 2020

Вы можете использовать KazooClient, чтобы установить sh соединение с Zookeeper и затем перечислить доступных брокеров в кластере.

0 голосов
/ 12 марта 2020

Не совсем, брокеры считаются недоступными, если с ними невозможно связаться и / или они не отвечают на запросы ApiVersions. Таким образом, чтобы проверить, работают ли серверы, вам нужно установить sh соединение, отправить запрос и проверить, верен ли ответ.

Однако, тривиальная проверка, является ли все из _bootstrap_servers_ являются подключаемыми может быть достаточно - таким образом, вы можете быстро устранить, например, проблемы с брандмауэром.

С другой стороны, вы можете исследовать уровни ведения журнала для этих классов.

...