#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:
На ум приходят два варианта:
- перед вызовом фильтра json{} переместите поле [message] в сторону (изменить-> переименовать).
- используйте параметр ‘target’ фильтра json {}, чтобы поместить данные json где-нибудь, кроме корня документа.