经过一番搜索并尝试各种解决方案后,这是我的格式:
%{TIME}", "interface", "%{EMAILLOCALPART}","MAC", "%{IP}:%{MAC}", "src", "SRC=%{IP}", "dst", "DST=%{IP}
但它与我的系统日志消息不匹配。消息来自IPFire,如下所示:
00:00:06 IN=red0 OUT= MAC=00:0d:b9:42:65:fc:00:17:10:82:5f:00:08:00 SRC=179.43.177.194 DST=46.127.208.49 LEN=60 TOS=0x00 PREC=0x00 TTL=56 ID=62301 DF PROTO=TCP SPT=37305 DPT=6666 WINDOW=29200 RES=0x00 SYN URGP=0
00:00:07 IN=red0 OUT= MAC=00:0d:b9:42:65:fc:00:17:10:82:5f:00:08:00 SRC=116.31.116.17 DST=46.127.208.49 LEN=60 TOS=0x00 PREC=0x00 TTL=47 ID=4401 DF PROTO=TCP SPT=23103 DPT=22 WINDOW=29200 RES=0x00 SYN URGP=0
00:00:07 IN=red0 OUT= MAC=00:0d:b9:42:65:fc:00:17:10:82:5f:00:08:00 SRC=74.79.43.231 DST=46.127.208.49 LEN=131 TOS=0x00 PREC=0x00 TTL=113 ID=16393 PROTO=UDP SPT=36303 DPT=6666 LEN=111
00:00:08 IN=red0 OUT= MAC=00:0d:b9:42:65:fc:00:17:10:82:5f:00:08:00 SRC=84.241.202.2 DST=46.127.208.49 LEN=129 TOS=0x00 PREC=0x00 TTL=51 ID=41009 DF PROTO=UDP SPT=35858 DPT=1025 LEN=109
00:00:09 IN=red0 OUT= MAC=00:0d:b9:42:65:fc:00:17:10:82:5f:00:08:00 SRC=198.8.80.183 DST=46.127.208.49 LEN=132 TOS=0x00 PREC=0x00 TTL=117 ID=21082 PROTO=UDP SPT=24883 DPT=1025 LEN=112
我也没有看到我在Kibana中定义的任何字段。我有一个非常基本的配置文件(与其他人相比),但我似乎无法绕过它。如果有人可以提供帮助,我需要看一个正确理解它的正确例子。
我的11-ipfire配置:
input {
udp {
port => 5514
}
tcp {
port => 5514
}
}
filter {
if [type] == "syslog" {
grok {
match => [ "time", "%{TIME}", "interface", "%{EMAILLOCALPART}","MAC", "%{IP}:%{MAC}", "src", "SRC=%{IP}", "dst", "DST=%{IP}" ]
}
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "ipfire"
}
}
答案 0 :(得分:0)
grok
过滤器的match
采用散列{ "field" => "pattern" }
,或者如果一个字段可能具有不同的内容,则可以传递数组,并且grok将按顺序尝试将字段与每个数组元素匹配{{ 1}}。您当前正在传递{ "field" => ["pattern1","pattern2", "patternX"] }
一个数组,它肯定不会解析您的示例日志或任何内容。
您提供的grok模式将匹配文字字符串
match
我不打算为你编写你的grok模式,但你可以使用grok constructor之类的在线工具轻松开发和测试grok模式。另外,我相信Logstash带有一些预先制作的系统日志模式。