0

如何使用 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]}

以及如何将字符串值解析为事件记录中的数据类型?像整数 /float / double

4

2 回答 2

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

于 2014-10-23T21:56:39.890 回答
0

使用in_tail插件的 types 参数创建数组。

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

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

于 2014-10-19T09:58:42.810 回答