【问题标题】:fluentd assigning types to new field in filterfluentd将类型分配给过滤器中的新字段
【发布时间】:2016-09-26 21:53:40
【问题描述】:

我正在使用 fluentd 从一组传感器推送一些数据。我推送的数据包含一个“时间戳”字段(以毫秒为单位),我需要在其日期组件(年、月等)中展开该字段。我在推送数据时使用过滤器来执行此操作,因此通过一些 ruby​​ 代码我可以轻松地分解时间戳,例如

<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 中的新字段分配有字符串类型,而对于某些我严格需要整数(例如,对于年、月数、日数等)。有什么办法告诉fluentd这些字段必须以整数形式添加?

我试过了:

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

但是没有用。

【问题讨论】:

    标签: ruby filter fluentd


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-28
      • 2021-07-15
      • 1970-01-01
      • 2015-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多