Logstash Parsing JSON сообщение
У меня ниже лог-сообщение, которое мне нужно отправить в logstash
{
"timestamp": "2017-11-02T12:25:26+0000",
"level": "INFO",
"thread": "dw-28 - POST /transaction",
"mdc": {
"requestId": "a00460f8-b27d-4a53-bafb-f9a19fa3dedb"
},
"logger": "app.util.JsonLogUtil",
"message": "{\"logMessage\":\"Transaction Created\", \"transactionId\":\"612632\", \"id\":\"17\", \"customerId\":\"null\", \"reason\":\"null\", \"currentOfferedDelta\":\"null\", \"updatedAmount\":\"null\", \"majorAmount\":\"null\"}",
"context": "default"
}
Сообщение внутри поля сообщения снова json. Я хочу извлечь все его поля и добавить их как часть итогового документа. Для этого я добавил свой файл конфигурации logstash, как показано ниже ->
input {
beats {
port => 5044
}
}
filter {
json{
source => "message"
target => "message"
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
sniffing => true
manage_template => false
index => "test1"
document_type => "%{[@metadata][type]}"
}
}
Но вывод в упругом поиске ->
{
"_index": "test1",
"_type": "log",
"_id": "AV-QtQKVpSHmBVb3JIlV",
"_score": 1,
"_source": {
"message": {
"timestamp": "2017-11-02T12:25:26+0000",
"level": "INFO",
"thread": "dw-28 - POST /transaction",
"mdc": {
"requestId": "a00460f8-b27d-4a53-bafb-f9a19fa3dedb"
},
"logger": "app.util.JsonLogUtil",
"message": "{\"logMessage\":\"Transaction Created\", \"transactionId\":\"612632\", \"id\":\"17\", \"customerId\":\"null\", \"reason\":\"null\", \"currentOfferedDelta\":\"null\", \"updatedAmount\":\"null\", \"majorAmount\":\"null\"}",
"context": "default"
},
"@version": "1",
"@timestamp": "2017-11-06T09:40:13.066Z",
"type": "log",
"count": 1,
"fields": null,
"offset": 9010,
"input_type": "log",
"tags": [
"beats_input_codec_plain_applied"
]
}
}
Невозможно извлечь поля, такие как транзакция, идентификатор, причина. Любые входные данные будут высоко оценены.
1 ответ
Этот фильтр может помочь вам:
filter{
mutate{
replace => [ "message", "%{message}" ]
gsub => [ 'message','\n','']
}
if [message] =~ /^{.*}$/{
json { source => message }
}
}