Мне нужно записать значение поля метки времени UNIX в @timestamp
, чтобы я мог правильно индексировать данные, проходящие через logstash, у меня эта часть работает. Однако у меня также есть требование, чтобы значение @timestamp
было временем вставки. С этой целью я сделал временное поле, которое имеет @timestamp
с первоначальным значением.Запись на @timestamp в LogStash
Вот что я работаю с:
filter {
csv {
separator => " " # <- this white space is actually a tab, don't change it, it's already perfect
skip_empty_columns => true
columns => ["timestamp", ...]
}
# works just fine
mutate {
add_field => {
"tmp" => "%{@timestamp}"
}
}
# works just fine
date {
match => ["timestamp", "UNIX"]
target => "@timestamp"
}
# this works too
mutate {
add_field => {
"[@metadata][indexDate]" => "%{+YYYY-MM-dd}"
}
}
# @timestamp is not being set back to its original value
date {
match => ["tmp", "UNIX"]
target => "@timestamp"
}
# works just fine
mutate {
remove_field => ["tmp"]
}
}
output {
elasticsearch {
hosts => "elasticsearch:9200"
# this works
index => "indexname-%{[@metadata][indexDate]}"
}
}
Проблема здесь:
date {
match => ["tmp", "UNIX"]
target => "@timestamp"
}
@timestamp
это не вернется к своему исходному значению. Когда я проверяю данные, он имеет то же значение, что и поле timestamp
.
Вы можете просто удалить 'цель => ...' обычно '@ timestamp' поле будет выбрано по умолчанию. – Val
Я только что попробовал, сначала в проблемной области, затем в обоих местах. '@ timestamp' по-прежнему сохраняет значение' timestamp'. – robbmj