logstash парсинг адреса IPV6

Я новичок в шаблонах logstash / grok.

В моем лог-файле у меня есть строка в этом формате, как показано ниже:

::ffff:172.19.7.180 - - [10/Oct/2016:06:40:26 +0000] 1 "GET /authenticator/users HTTP/1.1" 200 7369

Когда я пытаюсь использовать простое сопоставление с шаблоном IP%{IP}, используя конструктор grok, он показывает только частичное совпадение:

after match:    .19.7.180 - - [10/Oct/2016:06:33:58 +0000] 1 "POST /authenticator/searchUsers HTTP/1.1" 200 280

Таким образом, совпала только часть IP-адреса, так как часть "после совпадения" все еще показывает оставшуюся часть IP-адреса.

Запросы: 1. Что это за формат IP-адреса::ffff:172.19.7.180? 2. Как решить эту проблему, чтобы правильно проанализировать IP-адрес?

Кстати, я использую nodejs middleware morgan logger, который печатает IP-адрес в этом формате.

2 ответа

Решение

Обратите внимание, что журнал содержит адреса IPv4 и IPv6, разделенные двоеточием, поэтому правильный шаблон, который вам нужно использовать, следующий:

%{IPV6:ipv6}:%{IPV4:ipv4}

Тогда в вашем случае у вас будет два поля:

"ipv6" => "::ffff"
"ipv4" => "172.19.7.180" 

Это будет работать, пока эта проблема не будет решена.

Эти IP-адреса находятся в формате IPv4-Embedded IPv6 и %{IP} не соответствует этому. Единственный способ - использовать %{DATA} или напишите свое собственное регулярное выражение.

Другие вопросы по тегам