2014-10-19 4 views
0

Как создать массив значений в записи события с помощью FluentD?Массив значений в FluentD

Я проанализировал широту и долготу из журнала. Как преобразовать эти значения в массив?

Ex. У меня есть журнал, как

2014-9-23T09:27:28.345 1411464370345 -37.0081,174.792 BBC SEARCH be03debe-b0af-4939-9abc-7c0ad25bb114 DEPARTURE 16 576.00 ROLLBACK

Я разобран широта = -37,0081 и долгота = 174,792. Как создать такой объект JSON?

{location:[-37.0081,174.792]}

И как разобрать значение строковых типов данных в записи событий? Как integer/float/double

ответ

0

Созданный массив с параметрами типов in_tail плагин.

types qty:integer,txamount:float,location:array

Но элементы массива имеют тип строки.

0

Попробуйте следующую конфигурацию

<source> 
    type tail 
    path stackoverflow.log 
    format /^(?<time>[^ ]+) (?<field_1>[^ ]+) (?<array_field>[^ ]+) (?<rest>.+)$/ 
    time_format %Y-%m-%dT%H:%M:%S 
    types array_field:array 
    tag test 
</source> 

<match test> 
    type stdout 
</match> 

Тогда для 2014-9-23T09:27:28.345 1411464370345 -37.0081,174.792 BBC SEARCH be03debe-b0af-4939-9abc-7c0ad25bb114 DEPARTURE 16 576.00 ROLLBACK, вы должны увидеть следующий вывод в стандартный вывод

2014-09-23 09:27:28 +0000 test: {"field_1":"1411464370345","array_field":["-37.0081","174.792"],"rest":"BBC SEARCH be03debe-b0af-4939-9abc-7c0ad25bb114 DEPARTURE 16 576.00 ROLLBACK"} 

Я испытал это с Fluentd v0.10.51, но он должен работать со всеми последние версии.

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