Logstash преобразование даты в действительное время joda (@timestamp)
надеюсь, кто-то может мне помочь!
У меня вопрос о logstash. Я grok следующую дату с succes: 26 / Jun/2013:14:00:26 +0200
далее, я хочу, чтобы эта дата использовалась как @ timestamp события. Как вы знаете logstash автоматически добавляет метку времени.
замена метки времени, которую добавляет logstash, может быть выполнена фильтром даты. Я добавил следующий фильтр даты: match => [ "date", "dd/MMM / YYYY:HH:mm:ss Z"]
но, по какой-то причине это не сработает. Когда я проверить его, я вижу, что logstash просто добавляет свою метку.
код:
grok {
type => "log-date"
pattern => "%{HTTPDATE:date}"
}
date{
type => "log-date"
match => [ "date", "dd/MMM/YYYY:HH:mm:ss Z"]
}
Мне нужно это сделать, чтобы я мог добавлять события в elasticsearch.
спасибо заранее!
2 ответов
я использовал следующий подход:
# strip the timestamp and force event timestamp to be the same.
# the original string is saved in field %{log_timestamp}.
# the original logstash input timestamp is saved in field %{event_timestamp}.
grok {
patterns_dir => "./patterns"
match => [ "message", "%{IRODS_TIMESTAMP:log_timestamp}" ]
add_tag => "got_syslog_timestamp"
add_field => [ "event_timestamp", "%{@timestamp}" ]
}
date {
match => [ "log_timestamp", "MMM dd HH:mm:ss" ]
}
mutate {
replace => [ "@timestamp", "%{log_timestamp}" ]
}
моя проблема теперь в том, что, даже если @timestamp заменен, я хотел бы сначала преобразовать его в формат, совместимый с ISO8601, чтобы у других программ не было проблем с его интерпретацией, например, временная метка, присутствующая в"event_timestamp":
"@timestamp" => "Mar 5 14:38:40",
"@version" => "1",
"type" => "irods.relog",
"host" => "ids-dev",
"path" => "/root/logstash/reLog.2013.03.01",
"pid" => "5229",
"level" => "NOTICE",
"log_timestamp" => "Mar 5 14:38:40",
"event_timestamp" => "2013-09-17 12:20:28 UTC",
"tags" => [
[0] "got_syslog_timestamp"
]
Вы можете легко преобразовать его так как у вас есть год... В моем случае мне пришлось бы разобрать его из атрибута" path " (filename)... но все же, нет кажется, это директива convert_to_iso8901 => @timestamp.
надеюсь, что это поможет с вашей проблемой в любом случае! :)
приведенный выше ответ-это просто работа ! попробуйте добавить locale => "en"
в ваш код.
Если не добавлено, дата дни недели и названия месяцев будет проанализирован с языком локали платформы по умолчанию (испанский, французский или любой другой), и поэтому он не работает (так как ваш журнал на английском языке).
date{
type => "log-date"
match => [ "date", "dd/MMM/YYYY:HH:mm:ss Z"]
locale => "en"
}