Логста sh Грок JSON ошибка - маппер другого типа - PullRequest
0 голосов
/ 05 августа 2020

У меня есть этот файл журнала:

2020-08-05 09:11:19 INFO-flask.model-{"version": "1.2.1", "time": 0.651745080947876, "output": {...}}

Это мой журнал sh настройка фильтра

grok{
        match => {
          "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:log.level}-%{DATA:model}-%{GREEDYDATA:log.message}"}
        }
    date {
            timezone => "UTC"
            match => ["timestamp" , "ISO8601", "yyyy-MM-dd HH:mm:ss"]
            target => "@timestamp"
            remove_field => [ "timestamp" ]
    }
    
    json{
            source => "log.message"
            target => "log.message"
    }
    mutate {
            add_field => {
                    "execution.time" => "%{[log.message][time]}"
            }
    }
}

Я хочу извлечь значение «времени» из сообщения. Но я получаю эту ошибку:

[2020-08-05T09:11:32,688][WARN ][logstash.outputs.elasticsearch][main][81ad4d5f6359b99ec4e52c93e518567c1fe91de303faf6fa1a4d905a73d3c334] Could not index event to Elasticsearch. {:status=>400, :action=>["index", {:_id=>nil, :_index=>"index-2020.08.05", :routing=>nil, :_type=>"_doc"}, #<LogStash::Event:0xbe6a80>], :response=>{"index"=>{"_index"=>"index-2020.08.05", "_type"=>"_doc", "_id"=>"ywPjvXMByEqBCvLy1871", "status"=>400, "error"=>{"type"=>"illegal_argument_exception", "reason"=>"mapper [log.message.input.values] of different type, current_type [long], merged_type [text]"}}}}

1 Ответ

0 голосов
/ 05 августа 2020

Найдите фильтр для вашей конфигурации logsta sh:

filter {
grok {
  match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:log-level}-%{DATA:model}-%{GREEDYDATA:KV}" }
  overwrite => [ "message" ]
      }

  kv {
       source => "KV"
       value_split => ": "
       field_split => ", "
       target => "msg"
     }

}

Надеюсь, это решит вашу проблему.

...