FluentD中的值数组

时间:2014-10-19 09:38:01

标签: arrays json fluentd

如何使用FluentD在事件记录中创建值数组?

我已经从日志中解析了纬度和经度。如何将这些值转换为数组?

实施例。 我有一个像

这样的日志

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

2 个答案:

答案 0 :(得分:0)

使用类型参数 in_tail 插件创建数组。

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

但是数组元素是字符串类型。

答案 1 :(得分: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,您应该在stdout中看到以下输出

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对此进行了测试,但它应该适用于所有最新版本。