#java #apache-kafka #kafka-producer-api
#java #apache-kafka #kafka-producer-api
Вопрос:
Я заметил, что Kafka Producer использует протокол tcp.
Есть ли какой-либо способ заранее исправить исходные порты нескольких производителей Kafka? Или, по крайней мере, есть ли какой-либо способ отследить исходный порт Kafka producer? Мне нужно отслеживать пропускную способность производителей и потребителей kafka. И необходимо настроить правила управления трафиком (tc) в соответствии с этими портами.
Комментарии:
1. Я не думаю, что это возможно, просто используя простую конфигурацию, хотя это функция, о которой люди продолжают просить. Обычное предложение — добавить обратный вызов соединения ( docs.confluent.io/current/clients/librdkafka /… ), а затем вызвать
setsockopt()
сокет подключения. Хотя в принципе это должно работать, признаюсь, я не пробовал.2. Есть ли какой-либо способ отследить исходный порт Kafka producer? Мне нужно отслеживать пропускную способность производителей и потребителей kafka.
3. Использовать
netstat
?4. Я имею в виду, если у меня работают десятки производителей, могу ли я отслеживать, какой производитель использует определенный порт и его пропускную способность? Я использовал iftop, который показывает, что соединения производителей потребляют очень неоднородную пропускную способность, с разницей, например, от 2 Мбит / с до 1 Кбит / с.
5. Извините, я не знаю, как справиться с этой ситуацией. На сетевом уровне все производители будут выглядеть одинаково.
Ответ №1:
Производители не открывают входящие сокеты, поэтому нет привязки к «исходному порту».
Единственная информация о сети, которую вы должны предоставить, это bootstrap.servers
Комментарии:
1. Есть ли какой-либо способ отследить исходный порт Kafka producer? Мне нужно отслеживать пропускную способность производителей и потребителей kafka.
2. @Onecricket — Это не (я думаю) о входящих сокетах. Речь идет о настройке исходного IP-адреса и порта для исходящего сокета. Это законная операция, но та, которую клиент Kafka (насколько я знаю) не предоставляет пользователям.
3. Точно. Задайте адрес сокета исходящего сокета.
4. @Ahmad Как уже упоминалось,
bootstrap.servers
это единственная сетевая информация, которую вы собираетесь получить. Если вы хотите проверить TCP-трафик на стороне сервера, вы можете добавить идентификатор клиента к каждому производителю, а затем выполнить дополнительную проверку пакетов, чтобы узнать, кто что отправил, в противном случае производители Kafka предоставляют метрики JMX для просмотра большого количества отправляемых данных