Logstash筛选器-动态显示名称字段

Logstash筛选器-动态显示名称字段,logstash,Logstash,我有以下格式的日志行,希望提取字段: "field1" => "content1","field2" => "content2",field3" => "content3",... 我既不知道字段名,也不知道字段数 我用ruby进行了尝试,但出现了错误: 错误:筛选器后第8行第51列(字节113)处的#,{,}中应有一个{ 红宝石{ 代码=>” fieldArray=event['message'].split(' 我的意见如下: input { stdin {}

我有以下格式的日志行,希望提取字段:

"field1" => "content1","field2" => "content2",field3" => "content3",...
我既不知道字段名,也不知道字段数

我用ruby进行了尝试,但出现了错误:

错误:筛选器后第8行第51列(字节113)处的#,{,}中应有一个{ 红宝石{ 代码=>” fieldArray=event['message'].split('

我的意见如下:

input {
    stdin {}
      }

filter {
ruby {
    code => "
        fieldArray = event['message'].split('", "')
        for field in fieldArray
            field = field.delete '",'
            field = field.delete '"'
            result = field.split(': ')
            event[result[0]] = result[1]
        end
    "
  }
}

output {
    stdout {
        codec => rubydebug
      }
 }
请告诉我如何修复这些错误


谢谢您的帮助。

ruby的问题是因为您的代码中有双引号。因为您使用双引号来包围整个代码块,所以您不能在代码块中使用它们。我可以想象转义它们会起作用

您还可以查看kv{}过滤器,它通常可以轻松地处理此类字段。如果没有,请使用mutate->gsub将“=>”转换为“:”并尝试json{}过滤器