Как добавить проверку здоровья для тем в API KafkaStreams - PullRequest
0 голосов
/ 12 января 2020

У меня есть критическое приложение Kafka, которое должно быть постоянно запущено. Исходные темы созданы debezium kafka connect для mysql binlog. К сожалению, многие вещи могут go не так с этой настройкой. Часто коннекторы debezium выходят из строя и требуют перезапуска, так же как и мои приложения (потому что без каких-либо исключений он просто зависает и перестает потреблять). Мой ручной способ проверки и обнаружения сбоя - проверить журнал kibana, затем использовать подозрительные topi c через терминал. Я могу имитировать c это в коде, но, очевидно, не лучший способ. Интересно, есть ли в API KafkaStream возможность, позволяющая мне выполнять такую ​​проверку работоспособности и проверять другие части кластера Kafka? Еще один момент, который меня беспокоит, - могу ли я сохранить поток и вернуться к темам, когда коннекторы снова подключены.

1 Ответ

0 голосов
/ 12 января 2020

Вы можете проверить Состояние потоков Кафки , чтобы проверить, выполняется ли это перебалансирование / запуск, что указывает на исправность операций. Хотя, если в топологию не поступает никаких данных, я бы предположил, что ошибок не будет, поэтому вам нужно проверить работоспособность зависимостей вверх по течению.

В целом, может показаться, что вы захотите потратить некоторое время на использование инструментов мониторинга, таких как Consul или Sensu, которые могут выполнять локальные проверки работоспособности служб и отправлять оповещения, когда службы go отключены. Или, по крайней мере, Предупреждение Elasticseach

Что касается проверки работоспособности Kafka, вы можете сделать это несколькими способами

  1. Работает ли процесс брокера и zookeeper ? (S SH к узлу, проверьте процессы)
  2. Открыты ли порты брокера и zookeeper? (используйте Socket-соединение)
  3. Существуют ли важные метрики JMX, которые вы можете отслеживать? ( Metricbeat )
  4. Можете ли вы найти активного брокера Контроллера (используйте AdminClient#describeCluster)
  5. Есть ли необходимое минимальное количество брокеров, на которое вы хотели бы ответить как часть метаданные контроллера (которые можно получить из AdminClient)
  6. Имеют ли темы, которые вы используете, правильную конфигурацию? (срок хранения, минимальный ресурс, коэффициент репликации, количество разделов и т. д. c)? (снова используйте AdminClient)
...