2015-11-20 3 views
0

Я помещаю журналы tsung в ElasticSearch (ES), чтобы я мог фильтровать, визуализировать и сравнивать результаты с помощью Kibana.Как фильтровать несколько полей с тем же именем в logstash?

Я использую logstash и его синтаксический анализатор JSON для ввода журналов tsung в формате JSON в ES.

Журналы Tsung немного сложны (IMO) с объектами массива в объекты массива, событие с несколькими строками и несколько полей с таким же именем, как «значение» в моем примере в дальнейшем.

Я хотел бы превратить это событие:

{ 
"stats":[ 
    {"timestamp": 1317413861, "samples": [ 
    {"name": "users", "value": 0, "max": 1}, 
    {"name": "users_count", "value": 1, "total": 1}, 
    {"name": "finish_users_count", "value": 1, "total": 1}]}]} 

в это:

{"timestamp": 1317413861},{"users_value":0},{"users_max":1},{"users_count_value":1},{"users_count_total":1},{"finish_users_count_value":1},{"finish_users_count_total":1} 

Поскольку весь файл журнала цзун пересылается logstash в конце теста производительности кампании, я m думать об использовании regex для удаления CR и unusefull stats и образцы массивы перед отправкой события в logstash для того, чтобы упростите немного.

И тогда, я хотел бы использовать те виды опции фильтра JSON:

add_field => {"%{name}_value" => "%{value}"} 
add_field => {"%{name}_max" => "%{max}"} 
add_field => {"%{name}_total" => "%{total}"} 

Но как мне справиться с тем, что есть много значения поля в одном случае, например? Что лучше всего делать?

Благодарим за помощь.

+0

Мне кажется, что вы должны иметь возможность выполнять итерацию каждого словаря в образцах, чтобы сделать преобразование, не прибегая к регулярному выражению. Я смотрю на это с точки зрения Python, поэтому я знаю, что это сработает, объедините значение для «имени» для каждого из следующих ключей. – PyNEwbie

ответ

1

Чувствовать себя похожим на ruby ​​{} фильтр. Перебирайте записи в поле «samples» и создайте свои собственные поля на основе имени/значения/total/max.

Есть примеры такого поведения в другом месте на SO.

+0

После изучения базового синтаксиса Ruby я много вдохновил это http://stackoverflow.com/ вопросы/22067346/logstash-индексирование-JSON-массивы – Peter

Смежные вопросы