Итак, я использую Logstash для анализа журналов доступа Apache.В настоящее время я использую некоторые фильтры kv
, чтобы справиться с этим с помощью Logstash 6.7.x (и более ранних версий), но хотел обновить его до Logstash 7.x.
Это похоже на предупреждение IЯ видел в Logstash 6.7.x, что теперь приводит к явной ошибке с «Исключением», которое делает kv
мои фильтры бесполезными.
Предупреждение, которое я получаю в Logstash 6.7.0, таково:
2019-05-13T10:57:09,541][WARN ][org.logstash.FieldReference] Detected ambiguous Field Reference `fee[]`, which we expanded to the path `[fee]`; in a future release of Logstash, ambiguous Field References will not be expanded.
Фильтры kv
выглядят так:
kv {
source => "request"
field_split => "&?"
allow_duplicate_values => false
include_keys => [ "fee", "fie", "foe", "fum" ]
include_keys => [ "fee[]", "fie[]", "foe[]", "fum[]" ]
prefix => "abc_"
}
Да, похоже, что include_keys
немного избыточны, но если вы знаете о параметрах GETв URL, в том числе такие вещи, как fee
и fee[]
позволяют мне захватывать значения, которые передаются в виде массива, а также строки.И это работает отлично!До сих пор.
В Logstash 7.x вместо предупреждения я получаю следующее:
Exception while parsing KV {:exception=>"Invalid FieldReference: `fee[]`"}
Ну, это воняет.Это в основном означает, что мой ключ fee[]
include не работает.И теперь мой анализ данных отключен, поскольку мне нужно учитывать значения, которые отправляются как fee
, а также fee[]
в этом процессе.
Считывание этого предупреждения из Logstash 6.7.x, по-видимому, четко говорит о том, чтоfee[]
будет интерпретироваться как [fee]
, но это совершенно не то, что мне нужно, поскольку параметры GET URL на самом деле не присваивают значения массива fee[0]
, fee[1]
и fee[2]
и т. Д .;значения довольно произвольны для элементов, основанных на пользовательском вводе.
Так что я могу сделать, чтобы эффективно обойти эту проблему?