Я помещаю журналы 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}"}
Но как мне справиться с тем, что есть много значения поля в одном случае, например? Что лучше всего делать?
Благодарим за помощь.
Мне кажется, что вы должны иметь возможность выполнять итерацию каждого словаря в образцах, чтобы сделать преобразование, не прибегая к регулярному выражению. Я смотрю на это с точки зрения Python, поэтому я знаю, что это сработает, объедините значение для «имени» для каждого из следующих ключей. – PyNEwbie