Logstash 如何从消息字段中删除尾随换行符

Logstash 如何从消息字段中删除尾随换行符,logstash,Logstash,我将Glassfish 4个日志文件和日志存储一起发送到ElasticSearch水槽。如何使用Logstash从消息字段中删除尾随的换行符 我的活动如下所示: { “@timestamp”=>“2013-11-21T13:29:33.081Z”, “message”=>“[2013-11-21T13:29:32.577+0000][glassfish 4.0][INFO][[javax.resourceadapter.mqjmsra.lifecycle][tid:_ThreadID=142 _

我将Glassfish 4个日志文件和日志存储一起发送到ElasticSearch水槽。如何使用Logstash从消息字段中删除尾随的换行符

我的活动如下所示:

{
“@timestamp”=>“2013-11-21T13:29:33.081Z”,
“message”=>“[2013-11-21T13:29:32.577+0000][glassfish 4.0][INFO][[javax.resourceadapter.mqjmsra.lifecycle][tid:_ThreadID=142 _ThreadName=Thread-43][timeMillis:1385005727][levelValue:800][\n mqjmsra\u RA1101:glassfish MQ JMS资源适配器已停止。]\n”,
“@version”=>“1”,
“标记”=>[“多行”,“日期过滤”],
“主机”=>“我的主机”,
路径“=>”./server.log
} 

您必须使用具有正确模式的多行过滤器,以告诉logstash,前面有空格的每一行都属于前面的行。将这些行添加到conf文件中

filter{
  ...
  multiline {
    type => "gflogs"
    pattern => "\[\#\|\d{4}"
    negate => true
    what => "previous"
  }
  ...
}
您还可以包括grok插件来处理时间戳,并从being索引中过滤不规则的行

请参阅在同一台计算机上使用单个logstash实例的完整堆栈

input {
  stdin {
    type => "stdin-type"
  }

  file {
    path => "/path/to/glassfish/logs/*.log"
    type => "gflogs"
  }
}

filter{
  multiline {
    type => "gflogs"
    pattern => "\[\#\|\d{4}"
    negate => true
    what => "previous"
  }

  grok {
    type => "gflogs"
    pattern => "(?m)\[\#\|%{TIMESTAMP_ISO8601:timestamp}\|%{LOGLEVEL:loglevel}\|%{DATA:server_version}\|%{JAVACLASS:category}\|%{DATA:kv}\|%{DATA:message}\|\#\]"
    named_captures_only => true
    singles => true
  }

  date {
    type => "gflogs"
    match => [ "timestamp", "ISO8601" ]
  }

  kv {
    type => "gflogs"
    exclude_tags => "_grokparsefailure"
    source => "kv"
    field_split => ";"
    value_split => "="
  }
}

output {
  stdout { codec => rubydebug }
  elasticsearch { embedded => true }
}
这对我有用。请看这篇文章。我也可以为伟大的和最新的人提供建议。这也是支持logstash作者工作的一个好方法


希望能在柏林的任何活动上见到你

第二种解决方案是使用。它允许您删除字段的值

filter {
  # Remove leading and trailing whitspaces (including newline etc. etc.)
  mutate {
    strip => "message"
  }
}

使用多行过滤器时不起作用。我使用gsub来替换\r\n(\n本身还不够)和空字符串的空格。