key/value 对的可变长度集的 Logstash GROK 解析

Logstash GROK parsing of variable length set of key/value pairs

我有一个日志文件,其中包含可变数量的 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

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

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

我很难在文档中找到关于此的内容。

这样的事情对你有用吗:

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
  '
 }
}