fluentd将类型分配给过滤器中的新字段

问题描述:

我正在使用fluentd从一组传感器中推送一些数据。我推送的数据包含一个“时间戳”字段(以毫秒为单位),我需要在其日期组件(年份,月份等)中进行爆炸。当数据被推送时,我使用了一个过滤器来实现这一点,所以通过一些ruby代码,我可以很容易地分解时间戳。fluentd将类型分配给过滤器中的新字段

<filter *> 
    @type record_transformer 
    enable_ruby 
    <record> 
    year ${Time.at(Integer(record['timestamp'])/1000.0).strftime("%Y")} 
    monthnumber ${Time.at(Integer(record['timestamp'])/1000.0).strftime("%-m")} 
    monthname ${Time.at(Integer(record['timestamp'])/1000.0).strftime("%B")} 
    daynumber ${Time.at(Integer(record['timestamp'])/1000.0).strftime("%-d")} 
    dayname ${Time.at(Integer(record['timestamp'])/1000.0).strftime("%A")} 
    hour ${Time.at(Integer(record['timestamp'])/1000.0).strftime("%-k")} 
    minutes ${Time.at(Integer(record['timestamp'])/1000.0).strftime("%-M")} 
    seconds ${Time.at(Integer(record['timestamp'])/1000.0).strftime("%-S")} 
    </record> 
</filter> 

我的问题是,在新的领域是在JSON要纳入分配与字符串类型,而对于一些我的严格需要整数(例如,在今年,monthnumber,daynumber等) 。有没有办法告诉fluentd这些字段必须作为整数添加?

我试着用:

year ${Integer(Time.at(Integer(record['timestamp'])/1000.0).strftime("%Y"))} 

,但没有奏效。

根据documentation here,您可以使用选项auto_typecast true,该选项将为每个字段分配在Ruby代码中定义的类型。