logstash解析IPV6地址

logstash parsing IPV6 address

我是 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 地址匹配,因为 'after match' 部分仍然显示 IP 地址的剩余部分。

查询: 1、IP地址::ffff:172.19.7.180这个格式是什么? 2.如何解决这个问题,确保IP地址被正确解析?

顺便说一句,我正在使用 nodejs 中间件 morgan logger,它以这种格式打印 IP 地址。

请注意,日志包含 IPv4 和 IPv6 地址,用冒号分隔,因此您需要使用的正确模式如下:

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

那么在您的活动中您将有两个字段:

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

这将一直有效,直到 this issue 得到解决。

这些 IP 地址采用 IPv4 嵌入式 IPv6 格式,%{IP} 不匹配。唯一的方法是使用 %{DATA} 或编写自己的正则表达式。