【问题标题】:Logstash GROK parsing of variable length set of key/value pairsLogstash GROK 解析可变长度键/值对集
【发布时间】:2017-02-16 05:50:06
【问题描述】:

我有一个日志文件,其中包含可变数量的 k/v 对,例如:

2017/01/01 11:11:111,ABC=2,DEF=1
2017/01/01 11:11:112,ABC=4,DEF=1,GHI=7
2017/01/01 11:11:113,ABC=1
2017/01/01 11:11:114,DEF=3,GHI=1...etc

我想知道如何处理这个问题,以便弹性搜索可以使用这些信息。每个键代表一个连接池名称,其值定义自上次请求查看此信息以来启动池重启的频率。

我想报告一个折线图,它可以确定随着时间的推移,池 ABC 与 DEF 和 GHI 的比较...以及可能无限期的 JKL 和 MNO。

我很难在文档中找到这方面的内容。

【问题讨论】:

    标签: elasticsearch logstash logstash-grok


    【解决方案1】:

    这样的东西对你有用吗:

    filter {
     # filter for pool info
     grok { match => { "message" => "^%{YEAR}\/%{MONTHNUM}\/%{DAY}\s%{HOUR}\:%{MINUTE}\:%{SECOND},%{DATA:poolinfo}"  }
    }    
     # parse kv pairs
     ruby { code => '
       fieldArray = event.get( "poolinfo" ).split(",")
       for field in fieldArray
        key = field.split("=")[0]
        value = field.split("=")[1]
        event.set(key, value.to_i)
       end
      '
     }
    }
    

    【讨论】:

    • 那会很好,非常感谢。我现在需要一个关于 ruby​​ 的速成课程 :)
    • 我看到:14:26:57.189 [[main]>worker1] 错误 logstash.filters.ruby - 发生 Ruby 异常:nil:NilClass 的未定义方法 `split'
    • 消息是:"message" => "2017-02-17_09:16:10.786,BILL=5,PURCHASE=2,LOADVAL=3",
    • 好的,它需要 GREEDYDATA 模式,poolinfo 为空。学习曲线:)
    • 很高兴它有帮助!
    猜你喜欢
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 2017-07-18
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多