Импорт PCAP в Elasticsearch - PullRequest
       9

Импорт PCAP в Elasticsearch

0 голосов
/ 18 февраля 2019

Я пробую Elasticsearch в первый раз.

Я скачал Elasticsearch и Kibana и все вроде нормально работает.Я могу посетить http://localhost:5601 и просмотреть Kibana без ошибок.

Я сделал несколько следов с wireshark / tshark и преобразовал его в Elasticsearch формат с помощью:

tshark -r test_trace.pcap -T ek > test_trace.pcap.json

Теперь я пытаюсь импортировать этот .json в Elasticsearch, но, похоже, он не работает:

curl -s -H "Content-Type: application/x-ndjson" -XPOST "localhost:9200/foo/_bulk" --data-binary "@/Users/test-elastic/test_trace.pcap.json"

Я не получаю ошибок или каких-либо выводов, но посещение Kibana показываетindex_not_found_exception и работает:

curl 'http://127.0.0.1:9200/foo/_search/?size=10&pretty=true'

Выходы

{
  "error" : {
    "root_cause" : [
      {
        "type" : "index_not_found_exception",
        "reason" : "no such index",
        "resource.type" : "index_or_alias",
        "resource.id" : "foo",
        "index_uuid" : "_na_",
        "index" : "foo"
      }
    ],
    "type" : "index_not_found_exception",
    "reason" : "no such index",
    "resource.type" : "index_or_alias",
    "resource.id" : "foo",
    "index_uuid" : "_na_",
    "index" : "foo"
  },
  "status" : 404
}

Как правильно импортировать мои данные и просматривать их в Elasticsearch и Kibana?

Файл JSON имеет размер 195 МБ, преобразованный из файла размером 10 МБ PCAP.Вывод первых строк в json-файл:

{"index" : {"_index": "packets-2019-02-15", "_type": "pcap_file", "_score": null}}
{"timestamp" : "1549540104875", "layers" : {"frame": {"frame_frame_interface_id":...

ОБНОВЛЕНИЕ

После удаления -s в curl Я получаю вывод:

HTTP/1.1 413 Request Entity Too Large

Теперь я попытался использовать split, чтобы разбить файлы на несколько файлов меньшего размера.

Повторное тестирование импорта теперь выдает несколько ошибок:

..."reason":"failed to parse","caused_by":{"type":"json_parse_exception","reason":"Duplicate field 'ip_ip_addr'\n at [Source: org.elasticsearch.common.bytes.BytesReference$MarkSupportingStreamInputWrapper@5d2f82db; line: 1, column: 1300...

ОБНОВЛЕНИЕ

Я использовал следующую команду на test_trace.pcap.json для получения файлов меньшего размера:

split -l 10000 -a 10 test_trace.pcap.json.pcap.json ./tmp/test_trace.pcap

Затем я получил много файлов и протестировал импорт с первым файлом:

./tmp/test_trace.pcapaaaaaaaaaa

Тип файла в моем .json:

"frame_frame_protocols": "sll:ethertype:ip:sctp"

, и действительно есть несколько полей ip_ip_addr, так как у меня есть IP-адреса источника и назначения в трассировках.

1 Ответ

0 голосов
/ 18 февраля 2019

Ваш JSON-файл уже содержит индекс, в который предполагается индексировать данные, т.е. packets-2019-02-15, поэтому ваш запрос должен быть просто:

curl 'http://127.0.0.1:9200/packets-2019-02-15/_search/?size=10&pretty=true'

Однако я сомневаюсь, что вы можете отправитьФайл размером 195 МБ за один раз, я предлагаю вам разбить его и загрузить в виде кусков

...