Это журналы брандмауэра контрольно-пропускного пункта, и выглядят они так.... (first row = fields, second row and all the rows thereafter = values of the respective fields
)
"Number" "Date" "Time" "Interface" "Origin" "Type" "Action" "Service" "Source Port" "Source" "Destination" "Protocol" "Rule" "Rule Name" "Current Rule Number" "Information"
"7319452" "18Mar2015" "15:00:00" "eth1-04" "grog1" "Log" "Accept" "domain-udp" "20616" "172.16.36.250" "8.8.8.8" "udp" "7" "" "7-open_1" "inzone: Internal; outzone: External; service_id: domain-udp" "Security Gateway/Management"
Я попытался сделать это понемногу, получив некоторый код в Интернете (фильтры Grok). У меня есть файл, в котором нет ничего, кроме "GoLpoT" "502"
(включая кавычки)
и некоторый код, который читает этот файл, который вставлен ниже:
input {
file {
path => "/usr/local/bin/firewall_log"
}
}
filter {
grok {
match => ["message", "%{WORD:type}\|%{NUMBER:nums}"]
}
}
output {
elasticsearch { host => localhost }
stdout { codec => rubydebug }
}
Когда я запускаю код, я получаю следующую ошибку
"message" => "",
"@version" => "1",
"@timestamp" => "2015-04-30T15:52:48.331Z",
"host" => "UOD-220076",
"path" => "/usr/local/bin/firewall_log",
"tags" => [
[0] "_grokparsefailure"
Любая помощь, пожалуйста.
Мой второй вопрос — как мне разобрать Date
и Time
— вместе или по отдельности? Дата не меняется - это все логи за один день - меняется только время.
Большое спасибо.