使用logstash将日志行转换为逗号分隔的字段

使用logstash将日志行转换为逗号分隔的字段,logstash,logstash-grok,Logstash,Logstash Grok,我对Logstash一无所知。谁能告诉我要添加到配置文件中的过滤器,以便使用Logstash分隔以下日志行 “2011/08/10 09:47:23.449598,0.001199,udp,203.136.22.3715306,147.32.84.22913363,CON,0,0,2317,64,流量=背景udp已建立” 我希望上面的行返回一个JSON对象,如下所示: { TimeStamp: 2011/08/10 09:47:23.449598 Value: 0.001199 protocol

我对Logstash一无所知。谁能告诉我要添加到配置文件中的过滤器,以便使用Logstash分隔以下日志行

“2011/08/10 09:47:23.449598,0.001199,udp,203.136.22.3715306,147.32.84.22913363,CON,0,0,2317,64,流量=背景udp已建立”

我希望上面的行返回一个JSON对象,如下所示:

{
TimeStamp: 2011/08/10 09:47:23.449598
Value: 0.001199
protocol: udp
IP: 203.136.22.37
...
}

复制下面的文本并将其写入conf文件,然后运行logstash。 它将从控制台获取输入,并以您想要的格式输出到控制台

input {
   stdin{
   }
}
filter {
        grok {
           match => ["message","%{DATESTAMP:timestamp},%{BASE16FLOAT:value},%{WORD:protocol},%{IP:ip},%{GREEDYDATA:remaining}" ]
        }
}
output {
  stdout {
        codec => rubydebug
  }
}

在这里试试你的模式给我5分钟,我正在努力。@7171u-那真的很有用。感谢像一种魅力。还有一件事要谢谢你。它适用于无错误的日志行。但当我有下面这样一行时,它失败了。请注意,缺少第二个字段。2011/08/10 09:51:34.450457,,tcp,213.200.244.21747908,->,147.32.84.596881,S_-RA,0,0,4244124,flow=Background-builded-cmpgw-cv,但如果缺少值,我想在我的输出Json对象中放一个默认值。我该怎么做呢?你想输入什么默认值?比如说100?