elasticsearch 通过Grok调试器获取Logstash\u grokparsefailure不会抛出错误,elasticsearch,logstash,kibana,logstash-grok,elasticsearch,Logstash,Kibana,Logstash Grok" /> elasticsearch 通过Grok调试器获取Logstash\u grokparsefailure不会抛出错误,elasticsearch,logstash,kibana,logstash-grok,elasticsearch,Logstash,Kibana,Logstash Grok" />

elasticsearch 通过Grok调试器获取Logstash\u grokparsefailure不会抛出错误

elasticsearch 通过Grok调试器获取Logstash\u grokparsefailure不会抛出错误,elasticsearch,logstash,kibana,logstash-grok,elasticsearch,Logstash,Kibana,Logstash Grok,我尝试用logstash和grok解析Check Point firewall系统日志 日志条目的示例: <190>2015 Mar 19 12:40:55 fw1 <60031> User admin failed to login (wrong authentication) (Source IP:123.123.123.123 Via:HTTP) 2015年3月19日12:40:55 fw1用户管理员登录失败(身份验证错误)(来源IP:123.123.123.12

我尝试用logstash和grok解析Check Point firewall系统日志

日志条目的示例:

<190>2015 Mar 19 12:40:55 fw1 <60031> User admin failed to login (wrong authentication) (Source IP:123.123.123.123 Via:HTTP)
2015年3月19日12:40:55 fw1用户管理员登录失败(身份验证错误)(来源IP:123.123.123.123 Via:HTTP)
我使用这种模式:

<%{POSINT:syslog_pri}>%{YEAR} %{SYSLOGTIMESTAMP:syslog_timestamp} %{DATA:device} <%{POSINT:status}> User %{WORD:account} %{DATA:msg} (?:[(])%{DATA:msg1}(?:[)]) (?:[(])Source IP:%{IPV4:src} Via:%{WORD:protocol}(?:[)])
%{YEAR}%{SYSLOGTIMESTAMP:syslog_timestamp}%{DATA:device}User%{WORD:account}%{DATA:msg}(?:[(])%{DATA:msg1}(?:[)])(?:[(])源IP:%{IPV4:src}通过:%{WORD protocol protocol}(?[)]))
所有字段都解析良好,并显示在elasticsearch/kibana中。这种特定的日志/模式组合可以很好地工作。但是,我一直收到_grokparsefailure标签。有人知道如何摆脱它们吗

更新:这是我完整的日志存储配置(最相关的部分是“登录失败”块):

输入{
系统日志{
类型=>“系统日志”
端口=>514
}
}
滤器{
如果[类型]=“系统日志”{
geoip{source=>“host”}
#已触发防火墙规则
如果[消息]=“数据包”{
格罗克{
match=>[“message”,“%{YEAR}%{SYSLOGTIMESTAMP:syslog_timestamp}%{DATA:device}%{WORD:activity}%{DATA:inout}(?:[(]]%{DATA:msg}(?[)]Src:%{IPV4:Src}SPort:%{POSINT:SPort}Dst:%{IPV4:Dst}端口:%{POSINT:DPort}IPP:%{POSINT:IPP}规则:%{INT:Rule:}
}
} 
#登录失败
如果[消息]=“失败”,则为else{
格罗克{
match=>[“message”、“%{YEAR}%{SYSLOGTIMESTAMP:syslog_timestamp}%{DATA:device}User%{WORD:account}%{DATA:msg}(?:[)%{DATA:msg1}(?:[)](?:[(])源IP:%{IPV4:src}通过:%{WORD WORD protocol protocol}(?:[)”]
}
}
#成功登录/退出
否则,如果[消息]=“已记录”{
变异{
add_field=>[“userlogged”,“%{host}”]
}
格罗克{
match=>[“message”、“%{YEAR}%{SYSLOGTIMESTAMP:syslog_timestamp}%{DATA:device}User%{DATA:account}%{WORD}%{WORD:action}(?:[(])源IP:%{IPV4:src}Via:%{WORD protocol}(?:[)])]
}
}
否则{
格罗克{
match=>[“message”,“%{SYSLOGTIMESTAMP:syslog\u timestamp}%{SYSLOGHOST:syslog\u hostname}%{DATA:syslog\u program}(?:\[%{POSINT:syslog\u pid}])?:%{GREEDYDATA:syslog\u message}]
}
}
}   
}
输出{
弹性搜索{
主机=>“本地主机”
协议=>“http”
}
}

似乎grokparsefailure是由输入插件“syslog”抛出的,该插件在内部也使用grok。将输入块替换为

input {
    tcp {
        port => 514
        type => syslog
    }
    udp {
        port => 514
        type => syslog
    }
}
我再也没有收到失败的消息了。
对我帮助很大。

我得到这个错误是因为我的
过滤器
块是在
输入
块之前声明的。

对我有效。请显示所有日志存储配置。
input {
    tcp {
        port => 514
        type => syslog
    }
    udp {
        port => 514
        type => syslog
    }
}