Logstash 如何从消息字段中删除尾随换行符
我将Glassfish 4个日志文件和日志存储一起发送到ElasticSearch水槽。如何使用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 _
{
“@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本身还不够)和空字符串的空格。