Skip to content

CSV Parser

Sun Jianbo edited this page Mar 5, 2018 · 4 revisions

CSV Parser 是一种按分隔符解析日志的解析方式。

CSV parser是按行读取日志的,对于每一行,以分隔符分隔,然后通过csv_schema命名分隔出来的字段名称以及字段类型。

默认情况下CSV是按\t分隔日志的,可以配置的分隔符包括但不限于, 各类字母、数字、特殊符号(#!*@%^、...)等等。

典型配置如下

    "parser":{
        "name":"req_csv",
        "type":"csv",
        "csv_splitter":"\t",
        "csv_schema":"logtype string, service string, timestamp long, method string, path string , reqheader jsonmap, hello jsonmap{a string,b float}, hi jsonmap{a long,...}",
        "labels":"machine nb110,team pandora"
    },
  • csv_schema 是按照逗号分隔的字符串,每个部分格式按照字段名 字段类型构成,字段类型现在支持string, long, jsonmap, floatdate
  • labels 填一些额外的标签信息,同样逗号分隔,每个部分由空格隔开,左边是标签的key,右边是value。
  • csv_splitter csv文件的分隔符定义,默认为'\t'
  • 类型说明
    • string go 的string
    • long go 的int64
    • float go 的float64
    • date 时间类型,具体参见grok date字段解析类型
    • jsonmap 将json反序列化为map[string]interface{},key必须为字符串格式,value为string, long 或者float。如果value不属于这三种格式,将会强制将value转成string类型
    • jsonmap 如果要指定jsonmap key的类型并且选定一些jsonmap中的key,那么只要用花括号包含选定的key以及其类型即可,里面的语法与外部相同也是以逗号","分隔不同的key和类型。目前不支持嵌套的jsonmap,如果除了选定的key,其他的key也要,就以”...“结尾即可。
  • Parser中解析出的字段就是csv_schema中命名的字段,还包括labels中定义的标签名,可以在sender中选择需要发送的字段和标签。
  • disable_record_errdata 默认为false,解析失败的数据会默认出现在"pandora_stash"字段,该选项可以禁止记录解析失败的数据。
Clone this wiki locally