Я пытаюсь настроить Logstash для записи некоторых полей JSON в базу данных.
Источник JSON выглядит следующим образом:
"задержки": {"запрос": 0, "kong": 0, "прокси": - 1}, "служба": {"хост":" 127.0.0.1" , "created_at": 1554311520, "connect_timeout": 60000, "идентификатор": "bdc5e673-4631-4460-8932-16633057d19f", "протокол": "HTTP", "имя": "Разработка" "read_timeout": 60000, "порт": 9999, "updated_at": 1554316363, "повторы": 5, "write_timeout": 60000}, "запрос": { "строки запроса": {}, "размер":"375 "," uri ":" / some / api / 32165498 / endpoint "," url ":" http://127.0.0.1:8000/some/api/32165498/endpoint","headers":{"header1":"1","header2":"352515622568","header3":"a","accept":"/","header4":"111","header5":"39318053","cache-control":"no-cache","connection":"keep-alive","accept-encoding":"gzip, deflate "," user-agent ":" PostmanRuntime / 7.13.0 "," host ":" 127.0.0.1: 8000" , "почтальон-маркер": "e6bdbc21-e39b-4420-9d6f-5666d88d8383", "header6": "а", "header7": "96"}, "метод": "GET"},»header7 ":" 127.0.0.1" , "пытается": {}, "upstream_uri": "/ некоторые / API / 32165498 / конечная точка", "ответ": { "заголовки": { "соединение": "близко",»тип контента ":" application / json; charset = utf-8 "," content-length ":" 194 "," server ":" kong / 1.0.3 "}," status ": 400," size ":"371"}, "маршрут": { "created_at": 1554311575, "методы": [ "GET", "POST"], "идентификатор": "6a13g329-bf1f-451b-BCAA-14cfcf087925", "услуги":{ "ID": "bd51e673-4631-4460-8932-16633057d19f "}," имя ":" Разработка " "хозяева": [], "updated_at": 1554316427, "preserve_host" ложь "regex_priority": 0, "пути": [], "протоколы": ["http "]," strip_path ": false}," launch_at ": 1559094275277}
При попытке отфильтровать некоторые поля ключи [], похоже, портят вывод.
Журнал текущего конвейера.conf выглядит следующим образом:
input {
beats {
port => "5044"
host => "0.0.0.0"
}
}
filter {
json {
source => "json-message"
}
if [request][header1] {
mutate {
add_field => { "header" => "%{request[header1]}"}}}
mutate {
remove_field => [ "header" ]
}
}
}
output {
file {
path => "/kong_logs/test.log"
}
}
Я также пробовал следующие конфигурации безрезультатно:
add_field => { "header" => "%{[request][header1]}"}}}
add_field => { "header" => "%{[request][0][header1]}"}}}
add_field => { "header" => "%{request[0][header1]}"}}}
С этим кодом я бы ожидал, что поле header1 будет отфильтровано,однако он все еще находится в выводе.
Заранее спасибо!