Избегайте переопределения поля сообщения по умолчанию в logstash

#json #logstash #logstash-grok

#json #logstash #logstash-grok

Вопрос:

Я использую logstash для анализа своих журналов. когда я анализирую json (который содержит поле «сообщение»), переопределяет поле сообщения по умолчанию. Я попытался использовать опцию remove_field фильтра json{ }, но это не сработало для меня.

Вот мой код фильтра:

 filter {
    mutate {
        gsub => ["message", """, "'"]
    }
    mutate {
        gsub => ["message", ".", "_"]
    }
    csv {
        columns => ["TIMESTAMP", "HEADERS", "FIELD1", "FIELD2", "FIELD2_TIME", "INTER_FIELD2"]
        separator => "|"
    }
    mutate {
        gsub => ["FIELD1", "'", '"']
    }

  #Removing message field inside FIELD1 json to avoid overriding
    json {
        source => "FIELD1"
        remove_field => ["message"]
    }
    mutate {
        gsub => ["FIELD2", "'", '"']
    }
    json {
        source => "FIELD2"
        remove_field => ["message"]
    }
}
 

Как избежать переопределения поля defaultmessage ?

Ответ №1:

На ум приходят два варианта:

  1. перед вызовом фильтра json{} переместите поле [message] в сторону (изменить-> переименовать).
  2. используйте параметр ‘target’ фильтра json {}, чтобы поместить данные json где-нибудь, кроме корня документа.