Я пытаюсь разобрать JSON-файл от Keen.io с помощью logstash в elasticsearch. Расположение и отметка времени сохраняются в параметрах, как это:Интерпретировать местоположения из файла Keen.io JSON в logstash filter
{
"result":
[
{
"keen":
{
"timestamp": "2014-12-02T12:23:51.000Z",
"created_at": "2014-12-01T23:25:31.396Z",
"id": "XXXX",
"location":
{
"coordinates": [-95.8, 36.1]
}
}
}
]
}
Мой фильтр в настоящее время выглядит следующим образом:
input {
file {
path => ["test.json"]
start_position => beginning
type => json
}
}
filter {
json {
source => message
remove_field => message
}
}
output {
stdout { codec => rubydebug }
}
Как я могу разобрать «метку» и «местоположение» поля таким образом, они используются для @timestamp и @ geoip.координаты в Elasticsearch?
Обновление: Я пробовал варианты этого без везения. Документация очень проста - я не понимаю, как обращаться с полями JSON? Есть ли способ добавить отладочный вывод, чтобы помочь? Я пробовал How to debug the logstash file plugin и Print a string to stdout using Logstash 1.4?, но не работает.
filter {
json {
source => message
remove_field => message
}
if ("[result][0][keen][created_at]") {
date {
add_field => [ "[timestamp]", "[result][0][keen][created_at]" ]
remove_field => "[result][0][keen][created_at]"
}
}
Update 2:
Дата сейчас работает, еще нужно, чтобы получить место рабочей.
filter {
json {
source => message
remove_field => message
add_tag => ["valid_json"]
}
if ("valid_json") {
if ("[result][0][keen][created_at]") {
date {
match => [ "[result][0][keen][created_at]", "ISO8601" ]
}
}
}
}
Я не думаю, что 'add_field' является правильным, вам понадобится' update_field', потому что поле timestamp уже существует. Во всяком случае, он вообще переходит в часть 'if (...)'? Добавьте тег где-нибудь там, чтобы узнать. –
Но 'update_field' не существует? Хорошая идея по тегу, было интересно, для чего они нужны. – parsley72
Что вам нужно, это атрибут 'match' фильтра' date', например 'filter { date { match => [" [result] [0] [keen] [created_at] "," MMM dd YYYY HH: mm: ss "] } }' –