Я использую logstash для чтения некоторых журналов. У меня есть файл журнала, который временная метка состоит только из поля времени, то есть 08: 28: 20,500, но не имеет поля даты. Я хотел бы сопоставить его с сегодняшним днем. Как мне это сделать с фильтром даты.Logstash Parse Date Issue
Строка моего файла журнала выглядит следующим образом.
08:28:20,500 INFO [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 27) JBAS010403: Deploying JDBC-compliant driver class org.h2.Driver (version 1.3)>>"C:\CIGNA\jboss\jboss.log"
Есть ли кто-нибудь, кто может помочь в этом вопросе? Большое спасибо заранее.
EDIT После использования рубина в качестве фильтра мне удалось решить проблему. Однако иногда бывает исключение рубина. Как видно из нижеследующего, первое сообщение встретило исключение ruby, а второе - отлично. Мне было бы интересно, как это произойдет, и если кто-нибудь может дать мне несколько советов. Благодарю.
{
"message" => "10:30:39 FATAL [org.jboss.as.server] (default task-1) JBAS015957: Server boot has failed in an unre
coverable manner; exiting. See previous messages for details.\r",
"@version" => "1",
"@timestamp" => "2016-07-26T02:43:17.379Z",
"path" => "C:/CIGNA/jboss/jboss.log",
"host" => "SIMSPad",
"type" => "txt",
"Time" => "10:30:39",
"Level" => "FATAL",
"JavaClass" => "org.jboss.as.server",
"Message" => "(default task-1) JBAS015957: Server boot has failed in an unrecoverable manner; exiting. See previo
us messages for details.\r",
"tags" => [
[0] "_rubyexception"
]
}
{
"message" => "10:30:39 DEBUG [org.jboss.as.quickstarts.logging.LoggingExample] (default task-1) Settings reconfig
ured: JBOSS EAP Resettlement\r",
"@version" => "1",
"@timestamp" => "2016-07-26T02:30:39.000Z",
"path" => "C:/CIGNA/jboss/jboss.log",
"host" => "SIMSPad",
"type" => "txt",
"Time" => "10:30:39",
"Level" => "DEBUG",
"JavaClass" => "org.jboss.as.quickstarts.logging.LoggingExample",
"Message" => "(default task-1) Settings reconfigured: JBOSS EAP Resettlement\r"
}
И моя обновленная часть фильтра в моем файле logstash .conf показана.
filter {
grok {
match => { "message" => '\A%{TIME:Time}%{SPACE}%{WORD:Level}%{SPACE}\[%{PROG:JavaClass}]%{SPACE}%{JAVALOGMESSAGE:Message}'}
}
ruby {
code => "
p = Time.parse(event['message']);
event['@timestamp'] = LogStash::Timestamp.new(p);
"
}
}
Я не вижу никакой метки (даты или времени) в вашей строке журнала образца. – Val
Извините, я не читал. Я отредактировал его сейчас. Спасибо за напоминание. –
Я предполагаю, что фильтр даты соответствует «Время» не «Временная метка»? Или где-то находится «временная метка»? – pandaadb