logstash 中动态列的配置中的正则表达式



我有日志文件,我在下面粘贴了两行:

11 月 26 日 14:20:32 172.16.0.1 日期=2014-11-26

时间=14:18:37 devname=XXXXCCCFFFFF devid=XXXCCVVGFFDD logid=3454363464 类型=流量子类型=转发级别=注意 vd=根 srcip=172.16.1.251 srcport=62032 srcintf="Combo_LAN" dstip=X.X.X.X dstport=X dstintf="wan2" sessionid=16172588 status=close user="X.X" group="Open Group" policyid=2 dstcountry="United States" srccountry="Reserved" trandisp=snat transip=X.X.X.X 传输=X service=HTTP proto=6 applist="Block_Applications" duration=11sentbyte=2377 rcvdbyte=784 sentpkt=6 rcvdpkt=7 identidx=5 utmaction=passthrough utmevent=webfilter utmsubtype=ftgd-cat urlcnt=1 hostname="tacoda.at.atwola.com" catdesc="Advertising"

11 月 26 日 14:20:32

172.16.0.1 日期=2014-11-26 时间=14:18:37 devname=XXXXCCCFFFFF devid=XXXCCVVGFFDD logid=3454363464 type=utm 子类型=webfilter 事件类型=ftgd_allow 级别=注意 vd="root" policyid=2 identidx=5 sessionid=15536743 user="X.X" srcip=X.X.X.X SRCPORT=X srcintf="Combo_LAN" dstip=X.X.X.X dstport=80 dstintf="wan2" service="http" hostname="streaming.sbismart.com" profiletype="Webfilter_Profile" profile="Open Group_Policy" status="passthrough" reqtype="direct" url="/diffusion/" sentbyte=984 rcvdbyte=202 msg="URL 属于策略中允许的类别" 方法=域 类=0 cat=18 catdesc="经纪和交易"

我的问题是,如果列数和顺序是固定的,我可以解析数据。

但是,如何解析配置文件中的动态列,以免获得_grokparsefailure

Ruby插件可以为您提供帮助。

以下是配置:

input {
    stdin{
    }
}
filter {
    ruby {
        code => '
            msg = event["message"]
            msgIndex = msg.index("date=")
            msgInsert = msg[msgIndex..-1]
            msgMap = msgInsert.scan(/(w+)=("(.*?)"|([^ ]+))/).map { |(first, second)| [first, second] }
            for x in msgMap
                key = x[0]
                value = x[1]
                event[key] = value
            end
        '
    }
}
output {
    stdout{
        codec => rubydebug
    }
}
  1. 首先,通过索引获取所有键=值对起始值date=
  2. 然后将所有键,值映射到字符串数组。
  3. 使用循环For插入所有值。

我已经尝试了您的日志,我可以使用该值创建所有相应的字段。希望这能帮助你

避免 grokparsefailure 的简单答案是提供与您的输入匹配的有效模式。 也就是说,您的问题似乎暗示字段并不总是按此顺序指定。 给定示例,您应该使用"kv"过滤器将这些键/值对拆分为字段。

相关内容

  • 没有找到相关文章

最新更新