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}
или напишите свое собственное регулярное выражение.