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