我是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地址?
BTW,我使用的是nodejs中间件morgan logger,它以这种格式打印IP地址。
答案 0 :(得分:2)
请注意,该日志包含以冒号分隔的两个 IPv4和IPv6地址,因此您需要使用的正确模式如下:
%{IPV6:ipv6}:%{IPV4:ipv4}
然后在您的活动中,您将有两个字段:
"ipv6" => "::ffff"
"ipv4" => "172.19.7.180"
这将在解决this issue之前有效。
答案 1 :(得分:1)
这些IP地址采用IPv4嵌入式IPv6格式,%{IP}
与之不匹配。唯一的方法是使用%{DATA}
或编写自己的正则表达式。