Fluentd中如何解析配置项

Fluentd的某些插件支持<parse>配置项,用来自定义对输入数据的解析方法。

比如,对于一般的应用程序,输入给Fluentd的就是一行行的文本,开发者可以通过配置将文本解析成具有实际意义的JSON对象,方便后续处理。

  1. parse概览
    parse配置项可以使用在<source>、<match>或<filter>中。如果使用的插件支持解析器特性,parse配置项就会生效。
    <source>  @type tail  # parameters for input plugin  <parse>    # parse section parameters  </parse></source>

    这里,对于tail的输入,需要由parse指定的解析器来解析。

    解析器插件类型

  2. <parse>配置项需要通过@type参数来指定解析器的类型。Fluentd内核绑定了很多有用的解析器插件,也可以根据需要安装其他第三方解析器。
    <parse>  @type apache2</parse>
     

    这里,@type指定使用apache2这个解析器来解析输入日志。



  3. parse参数说明
    1. @type
      Fluentd内置的解析器包含:regexp、apache2、apache_error、nginx、syslog、csv、tsv、ltsv、json、multiline、none    
    2. 可选参数,这些参数的默认值会随使用的解析器不同而改变,具体使用时可参考相关解析器的使用说明。
      1. types:用于转换字段的数据类型,支持的数据类型为:string、bool、integer、float、time
        types user_id:integer,paid:bool,paid_usd_amount:float
           

  • time_key:指定事件time属性使用的字段,若事件不含此字段,将使用当前时间
  • keep_time_key:true则保留record中的time字段,默认false
  • timeout:设置解析处理超时时间,主要用于检测错误的正则匹配      
  • 对time的进一步说明
    如果把record的某个字段解析为事件的time,则需要说明如何去解析这个“时间字段”。可通过以下参数进行说明。
    1. time_type:时间字段使用的时间格式,支持float、unixtime和string格式。
      float: seconds from Epoch + nano seconds (e.g. 1510544836.154709804)unixtime: seconds from Epoch (e.g. 1510544815)string: use format specified by time_format, local time or time zone
    2. time_format:用以说明time_type为string时的时间格式
    3. localtime:true则使用local time作为事件的time
    4. utc:true则使用UTC作为事件的time,和上边的localtime是互斥配置
    5. timezone:时区格式