Pur*_*rak 3 elasticsearch logstash logstash-configuration
所以我有以下格式的日志消息:
[INFO] <blah.blah> 2016-06-27 21:41:38,263 some text
[INFO] <blah.blah> 2016-06-28 18:41:38,262 some other text
Run Code Online (Sandbox Code Playgroud)
现在我想删除所有不包含特定字符串"xyz"的日志,并保留所有其余内容.我也想索引时间戳.
grokdebug帮助不大.
这是我的尝试:
input {
file {
path => "/Users/username/Desktop/validateLogconf/logs/*"
start_position => "beginning"
}
}
filter {
grok {
match => {
"message" => '%{SYSLOG5424SD:loglevel} <%{JAVACLASS:job}> %{GREEDYDATA:content}'
}
}
date {
match => [ "Date", "YYYY-mm-dd HH:mm:ss" ]
locale => en
}
}
output {
stdout {
codec => plain {
charset => "ISO-8859-1"
}
}
elasticsearch {
hosts => "http://localhost:9201"
index => "hello"
}
}
Run Code Online (Sandbox Code Playgroud)
我是grok的新手,所以上面的模式可能没有意义.请帮忙.
bau*_*dsp 10
要删除不包含字符串的消息xyz:
if ([message] !~ "xyz") {
drop { }
}
Run Code Online (Sandbox Code Playgroud)
您的grok模式不会抓取日志的日期部分.
从包含日期的grok模式中获得一个字段后,您可以在此字段上调用日期过滤器.
所以你的grok过滤器应如下所示:
grok {
match => {
"message" => '%{SYSLOG5424SD:loglevel} <%{JAVACLASS:job}> %{TIMESTAMP_ISO8601:Date} %{GREEDYDATA:content}'
}
}
Run Code Online (Sandbox Code Playgroud)
我添加了一个部分来获取日期,这将在现场Date.然后你可以使用日期过滤器:
date {
match => [ "Date", "YYYY-mm-dd HH:mm:ss,SSS" ]
locale => en
}
Run Code Online (Sandbox Code Playgroud)
我添加了,SSS以便格式匹配Date字段中的格式.解析的日期将存储在@timestamp字段中,除非使用target参数进行不同的指定.
| 归档时间: |
|
| 查看次数: |
12711 次 |
| 最近记录: |