Отметка времени не получает мое значение журнала, используя фильтр даты logstash?
У меня есть следующий конфиг для извлечения вызова Http и даты журнала во время вызова, но @timestamp показывает, когда журнал был отправлен с сервера FileBeat на logstash один.
input {
beats {
port => 5044
}
}
filter {
if [message] !~ /Calling SMC REST API/ {
drop { }
}else {
grok {
match => ["message", "{URIPATHPARAM:request}"]
match => ["message", "\[%{DATA:timestamp}\]%{GREEDYDATA:extra} %{GREEDYDATA:date}"]
}
date {
match => ["timestamp", "[YYYY-MM-dd HH:mm:ss,SSS]"]
target => "timestamp"
}
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200/"]
index => "smc_calls-%{+YYYY.MM.dd}"
}
stdout { codec => rubydebug }
}
Входное сообщение журнала:
[2017-04-25 12: 41: 25,064] rf234234232345454: Sg2343 ИНФОРМАЦИЯ emcJmsContainer-2 - ****** Вызов API SMC REST ******** http://com.asds.dsds:45/api?search=query
Выход в рубине:
"date" => "http-call", --> dont why http call is shown here
"offset" => 18036878,
"input_type" => "log",
"source" => "log source",
"message" => "entire filtered message",
"type" => "log",
"tags" => [
[0] "beats_input_codec_plain_applied",
[1] "_dateparsefailure"
],
"@timestamp" => 2017-05-03T06:08:59.486Z,
"extra" => "reaminaing data from message",
"@version" => "1",
"beat" => {
"hostname" => "host",
"name" => "host",
"version" => "5.3.1"
},
"host" => "icgaspadsw01d",
"timestamp" => "2017-04-25 12:41:25,064" --> log timestamp i want but dont see in kibana when indexed
2 ответа
Я думаю, что ваш синтаксический анализатор написан неправильно. Используйте это в гроке
\[%{DATA:timestamp}\]%{GREEDYDATA:extra} %{GREEDYDATA:date}
а затем используйте свой фильтр даты.
Получил, что работает со следующим фильтром Grok плюс дата:
grok {
match => ["message", "{URIPATHPARAM:request}"]
match => ["message", "%{TIMESTAMP_ISO8601:time}"]
}
date {
match => ["time", "YYYY-MM-dd HH:mm:ss,SSS"]
}