Возникли проблемы с разбором журналов брандмауэра контрольных точек с помощью фильтра grok

Это журналы брандмауэра контрольно-пропускного пункта, и выглядят они так.... (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 — вместе или по отдельности? Дата не меняется - это все логи за один день - меняется только время.

Большое спасибо.


person DannyKELK    schedule 30.04.2015    source источник
comment
Вы говорите, что ваш входной файл содержит две строки в кавычках, но это не то, что вы анализируете с помощью grok.   -  person Alain Collins    schedule 30.04.2015
comment
Спасибо, Коллинз, но не могли бы вы объяснить, что вы имеете в виду? Мой входной файл содержит две строки, GoLpoT и 502, и это то, что я пытаюсь разобрать.   -  person DannyKELK    schedule 30.04.2015
comment
Ваш ввод: GoLpoT 502 (две строки в кавычках, разделенные пробелом), но ваш шаблон grok: %{WORD:type}\|%{NUMBER:nums} (два значения, разделенных вертикальной чертой). Шаблоны Grok должны соответствовать вашему вводу.   -  person Alain Collins    schedule 30.04.2015
comment
Спасибо. все еще получаю ошибки. Входной файл сейчас Chckpoint 502 10.189.7.138 Разрешить 18 марта 2015 г. 15:00:01 и новый ввод кода {file { path =› /usr/local/bin/firewall_log } } filter { grok { match =› [message, %{WORD :type} %{NUMBER:nums} %{IP:sourceip} %{WORD:Action}] add_tag ​​=› контрольная точка } date { match =› [DATETIME, %{dd mmm yyyy hh:mm:ss}] target =› @timestamp } } output { elasticsearch {host =› localhost } stdout { codec =› rubydebug } }   -  person DannyKELK    schedule 30.04.2015
comment
Этот шаблон работает для меня с этим вводом в отладчике.   -  person Alain Collins    schedule 30.04.2015
comment
Коллинз, большое спасибо за помощь. Я решил удалить запятые и разделить записи только пробелами, и теперь это работает, но у меня возникла новая проблема ... Я разместил ее по следующей ссылке. Помогите, пожалуйста. stackoverflow.com/questions/29975826/   -  person DannyKELK    schedule 30.04.2015
comment
Я думаю, что стоит проверить этот ответ в отношении текущего вопроса: stackoverflow.com/questions/28957870/   -  person st2rseeker    schedule 24.03.2016