Logstash Kibana一直抱怨dateparse和grokparse错误

Logstash Kibana一直抱怨dateparse和grokparse错误,logstash,kibana,logstash-grok,Logstash,Kibana,Logstash Grok,我的logstash管道中有以下内容(从Filebeat接收多行日志): 然而,尽管日志通过Kibana,但它没有向我显示“正确”的数据,抱怨grokparse和dateparse错误(即使grok规则在Kibana调试器中测试良好!): 信息如Kibana所示: Audit file /u01/app/oracle/admin/DEVINST/adump/DEVINST_ora_43619_20200913121607479069143795.aud Oracle Database 12c S

我的logstash管道中有以下内容(从Filebeat接收多行日志):

然而,尽管日志通过Kibana,但它没有向我显示“正确”的数据,抱怨grokparse和dateparse错误(即使grok规则在Kibana调试器中测试良好!):

信息
如Kibana所示:

Audit file /u01/app/oracle/admin/DEVINST/adump/DEVINST_ora_43619_20200913121607479069143795.aud
Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production
Build label:    RDBMS_12.2.0.1.0_LINUX.X64_170125
ORACLE_HOME:    /u01/app/oracle/product/12.2.0/dbhome_1
System name:    Linux
Node name:      testserver
Release:        3.10.0-862.14.4.el7.x86_64
Version:        #1 SMP Fri Sep 21 09:07:21 UTC 2018
Machine:        x86_64
Instance name: DEVINST
Redo thread mounted by this instance: 1
Oracle process number: 55
Unix process pid: 43619, image: oracle@testserver (TNS V1-V3)
消息
应为:

+00:00
LENGTH : '275'
ACTION :[7] 'CONNECT'
DATABASE USER:[1] '/'
PRIVILEGE :[6] 'SYSDBA'
CLIENT USER:[9] 'testuser'
CLIENT TERMINAL:[5] 'pts/0'
STATUS:[1] '0'
DBID:[10] '1762369616'
SESSIONID:[10] '4294967295'
USERHOST:[21] 'testserver'
CLIENT ADDRESS:[0] ''
ACTION NUMBER:[3] '100'
由于这些原因,字段也没有被正确解析。 我做错了什么?为什么即使调试器显示正确的输出,它也不能正确解析消息和日期

编辑:

根据baudsp的建议,我已将我的邮件改写如下:

filter {
  if [type] == "oracle" {
    grok {
      match => { "message" => "(?<day>[A-Za-z]{3})(\s*)(?<month>[A-Za-z]{3})(\s*)(?<monthday>[0-9]{1,2})(\s*)(?<hour>[0-9]{1,2}):(?<min>[0-9]{1,2}):(?<sec>[0-9]{2})(\s*)(?<year>[0-9]{4})(\s*)(?<message>[\S\s]*)" }
      overwrite => [ "message" ]
    }
.....
过滤器{
如果[类型]=“oracle”{
格罗克{
match=>{“message”=>“(?[A-Za-z]{3})(\s*)(?[A-Za-z]{3})(\s*)(?[0-9]{1,2})(\s*)(?[0-9]{1,2}):(?[0-9]{1,2}):(?[0-9]{2})(\s*)(?[0-9]{4})(\s*)(?[s*)(?[s]]
覆盖=>[“消息”]
}
.....
但是,Kibana仍向我显示grokparse和dateparse错误:(

谢谢
J

对于消息的
预期部分,由于您似乎没有覆盖此字段,因此它不是预期值也就不足为奇了。对于第一个grok筛选器,GREEDYDATA模式转换为。*,它不应该与换行符匹配。要匹配换行符,可以使用
[\s\s]*
谢谢您的评论,您能解释一下为什么要覆盖消息吗?如果您想更改
消息
字段的内容(从您的问题看来,您想这样做),您必须覆盖它
+00:00
LENGTH : '275'
ACTION :[7] 'CONNECT'
DATABASE USER:[1] '/'
PRIVILEGE :[6] 'SYSDBA'
CLIENT USER:[9] 'testuser'
CLIENT TERMINAL:[5] 'pts/0'
STATUS:[1] '0'
DBID:[10] '1762369616'
SESSIONID:[10] '4294967295'
USERHOST:[21] 'testserver'
CLIENT ADDRESS:[0] ''
ACTION NUMBER:[3] '100'
filter {
  if [type] == "oracle" {
    grok {
      match => { "message" => "(?<day>[A-Za-z]{3})(\s*)(?<month>[A-Za-z]{3})(\s*)(?<monthday>[0-9]{1,2})(\s*)(?<hour>[0-9]{1,2}):(?<min>[0-9]{1,2}):(?<sec>[0-9]{2})(\s*)(?<year>[0-9]{4})(\s*)(?<message>[\S\s]*)" }
      overwrite => [ "message" ]
    }
.....