logstash_grokparsefailure问题
我对grok解析有问题。 在ElasticSearch/Kibana中,我匹配的行会出现标记“grokparsefailure” 这是我的日志存储配置:logstash_grokparsefailure问题,logstash,logstash-grok,Logstash,Logstash Grok,我对grok解析有问题。 在ElasticSearch/Kibana中,我匹配的行会出现标记“grokparsefailure” 这是我的日志存储配置: input { file { type => logfile path => ["/var/log/mylog.log"] } } filter { if [type] == "logfile" { mutate { gsub =>
input {
file {
type => logfile
path => ["/var/log/mylog.log"]
}
}
filter {
if [type] == "logfile"
{
mutate {
gsub => ["message","\"","'"]
}
grok
{ match => { "message" => "L %{DATE} - %{TIME}: " } }
}
}
output {
elasticsearch { host => localhost port => 9300 }
}
我试图匹配的线条/图案:
L 08/02/2014-22:55:49:日志文件关闭:“完成”
我尝试了调试器,它工作正常,我的模式匹配正确
我想要解析的行可能包含双引号,我已经读到grok处理和转义它们的方式可能存在问题。
所以我尝试用变异来代替“替换”,以避免出现问题,但没有运气
有什么想法吗?
我如何调试这个
谢谢发现了这个问题,是双引号引起的
match => { 'message' => 'L %{DATE:date} - %{TIME:time}: \"string_between_doublequotes\" '
需要使用简单引号来定义grok筛选器,并转义双引号
match => { 'message' => 'L %{DATE:date} - %{TIME:time}: \"string_between_doublequotes\" '
mylog.log中还有其他内容吗?因为任何不匹配的行都会生成一个
\u grokparsefailure
。调试这一点的一个好策略是创建一个包含预期日志的测试文件,并使用带有输入{stdin{}
和输出{stdout{codec=>rubydebug}的配置文件
然后执行logstash-f test_confgrok
结果…例如{%DATE DATE}
Hi,日志中还有其他东西我希望grokparsefailure是。尝试使用/logstash-e'input{stdin{}}output{stdout{codec=>rubydebug}}}