【问题标题】:Filters doesnt get recognised for some of the logs on kibanakibana 上的某些日志无法识别过滤器
【发布时间】:2020-10-12 19:27:54
【问题描述】:

我有一个与 kibana 的 logstash 集成,并且访问日志已发布到 kibana 仪表板。

现在我有一些日志和一些模式来识别这些日志。模式中定义了一些过滤器,现在我看到对于某些日志,过滤器被识别。对于某些日志,过滤器不会出现。在本地,当我使用 grok 调试器进行测试时,模式看起来不错。可能是什么问题?

记录哪个模式不匹配

2015-07-31 04:02:40 0.001 377 GET /ics 302 - "1.00572FZnxXkFo2n_GlCCyf0005yG0008PD;kYjE0ZDLIPGDj9ROnG" - "10.242.5.120"

图案:

ICSACCESSTIMESTAMPSTRING %{DATE}    %{TIME}
ICSWLS_ACCESS_LOG_FM1 %{ICSACCESSTIMESTAMPSTRING:icswlsaccess-logtimestamp} %{NUMBER:icswlsaccess-timetaken:float}  %{NUMBER:icswlsaccess-bytes:int}    %{DATA:icswlsaccess-csmethod}   %{DATA:icswlsaccess-csurl}  %{NUMBER:icswlsaccess-cstatus:int}  "%{DATA:icswlsaccess-dmsecid}" "%{DATA:icswlsaccess-ecidcontext}"   %{DATA:icswlsaccess-proxyremoteuser}    %{GREEDYDATA:icswlsaccess-proxyclientip}

ICSWLS_ACCESS_LOG_FM2 %{ICSACCESSTIMESTAMPSTRING:icswlsaccess-logtimestamp}  %{NUMBER:icswlsaccess-timetaken:float}   %{NUMBER:icswlsaccess-bytes:int} %{DATA:icswlsaccess-csmethod}    %{DATA:icswlsaccess-csurl}       %{NUMBER:icswlsaccess-cstatus:int}       "%{DATA:icswlsaccess-dmsecid}"   %{DATA:icswlsaccess-ecidcontext}       %{DATA:icswlsaccess-proxyremoteuser}     %{GREEDYDATA:icswlsaccess-proxyclientip}

ICSWLS_ACCESS_LOG_FM3 %{ICSACCESSTIMESTAMPSTRING:icswlsaccess-logtimestamp} %{NUMBER:icswlsaccess-timetaken:float}  %{NUMBER:icswlsaccess-bytes:int}    %{DATA:icswlsaccess-csmethod}   %{DATA:icswlsaccess-csurl}  %{NUMBER:icswlsaccess-cstatus:int}  "%{DATA:icswlsaccess-dmsecid}"  "%{DATA:icswlsaccess-ecidcontext}"  %{DATA:icswlsaccess-proxyremoteuser}    %{GREEDYDATA:icswlsaccess-proxyclientip}

ICSWLS_ACCESS_LOG_FM4 %{ICSACCESSTIMESTAMPSTRING:icswlsaccess-logtimestamp} %{NUMBER:icswlsaccess-timetaken:float}  %{NUMBER:icswlsaccess-bytes:int}    %{DATA:icswlsaccess-csmethod}   %{DATA:icswlsaccess-csurl}  %{NUMBER:icswlsaccess-cstatus:int}  "%{DATA:icswlsaccess-dmsecid}"  %{DATA:icswlsaccess-ecidcontext}    %{DATA:icswlsaccess-proxyremoteuser}    %{GREEDYDATA:icswlsaccess-proxyclientip}

ICSWLS_ACCESS_LOG_FM5 #%{GREEDYDATA:logcomments}

ICSWLS_ACCESS_LOG %{ICSWLS_ACCESS_LOG_FM1}|%{ICSWLS_ACCESS_LOG_FM2}|%{ICSWLS_ACCESS_LOG_FM3}|%{ICSWLS_ACCESS_LOG_FM4}|%{ICSWLS_ACCESS_LOG_FM5}

我尝试的另一个示例: 示例消息:

2015-08-12 13:20:48 0.002 377 GET /ics 302 - "1.0057HoLhIMPFo2n_GlCCyf0003TL000GHW;kYjE0ZDLIPGDj9ROnG" - "10.242.5.120"

图案:

ICSACCESSTIMESTAMPSTRING2 %{DATE} *%{TIME}

ICSWLS_ACCESS_LOG_FM6 %{ICSACCESSTIMESTAMPSTRING2:icswlsaccess-logtimestamp} *%{NUMBER:icswlsaccess-timetaken:float} *%{NUMBER:icswlsaccess-bytes:int} *%{DATA:icswlsaccess-csmethod} *%{DATA:icswlsaccess-csurl} *%{NUMBER:icswlsaccess-cstatus:int} *"%{DATA:icswlsaccess-dmsecid}" *"%{DATA:icswlsaccess-ecidcontext}" *%{DATA:icswlsaccess-proxyremoteuser} *%{GREEDYDATA:icswlsaccess-proxyclientip}

【问题讨论】:

    标签: logstash kibana logstash-grok


    【解决方案1】:

    在所有模式中,您在timetakenbytes 之间定义了两个空格;您的输入行只有一个。

    您可能会考虑使用“*”来匹配多个空格,这似乎会简化您的所有模式。

    您还可以使用 '"*' 使引号可选,我认为这会将所有内容组合成一个模式。

    最后,想象一下在将 5 个复杂模式“或”运算后,您的正则表达式会是什么样子。在每条进入的线路上运行它并不是很有效。幸运的是,您不必再这样做了。

    【讨论】:

    • 我尝试使用完全匹配的模式,但它不起作用。我也尝试了 " +" 和 " *" ,但都没有工作。
    【解决方案2】:

    我使用%{SPACE} 来满足 GROK 模式中的空间,并且效果很好。 对于有问题的示例,以下是使用%{SPACE}的可能解决方案

    filter {
       grok{
         match =>  { "message" => "%{TIMESTAMP_ISO8601:icswlsaccess-logtimestamp}%{SPACE}%{NUMBER:icswlsaccess-timetaken:float}%{SPACE}%{NUMBER:icswlsaccess-bytes:int}%{SPACE}%{WORD:icswlsaccess-csmethod}%{SPACE}%{DATA:icswlsaccess-csurl}%{SPACE}%{NUMBER:icswlsaccess-cstatus:int}%{SPACE}%{DATA:icswlsaccess-dmsecid}%{SPACE}\"%{DATA:icswlsaccess-ecidcontext}\"%{SPACE}%{DATA:icswlsaccess-proxyremoteuser}%{SPACE}\"%{GREEDYDATA:icswlsaccess-proxyclientip}\""} 
    
       }
       date {
          match => ["icswlsaccess-logtimestamp","yyyy-MM-dd HH:mm:ss"]
          timezone => "Europe/London"  # <----- use timezone that is applicable to you
          target => "@timestamp"
          remove_field => ["icswlsaccess-logtimestamp"]
        }
    
    }
    

    示例输出会是这样的

    {
            "icswlsaccess-ecidcontext" => "1.0057HoLhIMPFo2n_GlCCyf0003TL000GHW;kYjE0ZDLIPGDj9ROnG",
               "icswlsaccess-csmethod" => "GET",
                "icswlsaccess-cstatus" => 302,
        "icswlsaccess-proxyremoteuser" => "-",
                  "icswlsaccess-bytes" => 377,
                  "icswlsaccess-csurl" => "/ics",
                          "@timestamp" => 2015-08-12T12:20:48.000Z,
              "icswlsaccess-timetaken" => 0.002,
                "icswlsaccess-dmsecid" => "-",
          "icswlsaccess-proxyclientip" => "10.242.5.120"
                             
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-10
      • 2016-01-17
      • 2021-04-20
      • 2021-12-16
      • 2013-05-05
      相关资源
      最近更新 更多