2016-01-26 3 views
1

Я пытаюсь передать некоторые данные netflow в kafka. У меня есть некоторые netflow.pcap файлы, которые я читал, какКак передать вывод сценария оболочки кафке?

tcpdump -r netflow.pcap и получить такой вывод:

14:48:40.823468 IP abts-kk-static-242.4.166.122.airtelbroadband.in.35467 > abts-kk-static-126.96.166.122.airtelbroadband.in.9500: UDP, length 1416 
14:48:40.824216 IP abts-kk-static-242.4.166.122.airtelbroadband.in.35467 > abts-kk-static-126.96.166.122.airtelbroadband.in.9500: UDP, length 1416 

. . . .

В официальных документах упоминается традиционный способ создания производителя кафки, начиная с потребителя кафки, а на терминале вводить некоторые данные о производителе, которые будут показаны у потребителя. Хорошо. За работой.

Здесь they show how to input a file to kafka producer. Имейте в виду, всего один файл, а не несколько файлов.

Вопрос:

Как я могу кормить вывод сценария оболочки в kakfa брокера?

Например, сценарий оболочки:

#!/bin/bash 
FILES=/path/to/* 
for f in $FILES 
do 
    tcpdump -r netflow.pcap 
done 

Я не могу найти какую-либо документацию или статью, в которой они упоминают, как это сделать. Есть идеи? Благодаря!

+1

Если ты один генерируя 'pcap' файлов, теперь вы можете выводить трубы' pcap' непосредственно к производителю консоли, а первое сохранение в файлы. Тогда вам не нужно будет беспокоиться об объеме данных. –

ответ

0

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

Обратите внимание, что я использовал >>, чтобы добавить файл и не перезаписывать его.

Например:

#!/bin/bash 
FILES=/path/to/* 
for f in $FILES 
do 
    tcpdump -r netflow.pcap >> /tmp/tcpdump_output.txt 
done 

kafka-console-produce.sh --broker-list localhost:9092 --topic my_topic 
--new-producer < /tmp/tcpdump_output.txt 
+0

На самом деле, представьте, что каждый файл 'netflow.pcap' составляет 1 ГБ, и в каталоге таких файлов очень много. Решение, которое вы дали, вероятно, недостаточно эффективно. Вам не кажется? – HackCode

+0

Ну, вы можете вывести каждый tcpdump в другой файл, а затем перебрать выходные файлы и произвести их в kafka. Кроме того, вы можете установить [logstash] (https://www.elastic.co/products/logstash) на свой компьютер и настроить его для чтения ввода из некоторой папки, скажем, вашей выходной папки, где находятся все файлы tcpdumps, и установить kafka plug to logstash и использовать его для вывода контента в kafka. –

+0

не могли бы вы рассказать об этом комментарии? возможно, некоторые предварительные шаги? – HackCode

Смежные вопросы