elasticsearch,logstash,logstash-grok,Apache,elasticsearch,Logstash,Logstash Grok" /> elasticsearch,logstash,logstash-grok,Apache,elasticsearch,Logstash,Logstash Grok" />

无法使用logstash grok解析apache access.log

无法使用logstash grok解析apache access.log,apache,elasticsearch,logstash,logstash-grok,Apache,elasticsearch,Logstash,Logstash Grok,好的,我使用logstash解析apacheaccess.log,我可以推送数据,但无法解析它 这是我的logstash.conf filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}+%{GREEDYDATA:extra_fields}" }

好的,我使用logstash解析apacheaccess.log,我可以推送数据,但无法解析它

这是我的logstash.conf

filter {
        grok {
                match => {
                        "message" => "%{COMBINEDAPACHELOG}+%{GREEDYDATA:extra_fields}"
                }
        }
        date {
                match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
        }
}
output {
        elasticsearch {
这是我的apache日志的一个例子

[26/May/2021:14:03:31 +0000] **.**.**.** **.**.**.** - example-example.example.com "-" "ExampleMonitoring/1.0" **.**.**.** - "GET /sat0-ldap/OPX4/localhost:8402/superviser-dynamic HTTP/1.1" 200 1791 **.**.**.*** **.**.**.***
注意:stars*中的所有内容都是IP地址,几乎可以有任何格式。LogFormat指令允许非常灵活地确定以什么顺序记录哪些条目

在几个httpd实现中经常使用两种格式,称为通用日志格式和组合日志格式,因此logstash包括与之匹配的grok模式

您的日志不是CombinedAppachelog格式,这是

%{IPORHOST:clientip} %{HTTPDUSER:ident} %{HTTPDUSER:auth} \[%{HTTPDATE:timestamp}\] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})" (?:-|%{NUMBER:response}) (?:-|%{NUMBER:bytes}) %{QS:referrer} %{QS:agent}

定义了logstash模式。您将需要创建一个与日志格式匹配的自定义模式。

尝试此grok模式:
\[%{HTTPDATE:timestamp}\]%{IP:ip1}%{IP:ip2}({124;%{DATA:myfield1})%{IPORHOST:hostname}\({DATA:myfield2})\“\{DATA:useragent}\{IP:ip3}({124%{DATA:myfield3})(?:%{WORD WORD WORD HTTP:nottp version}{{DATA:rawrequest})“%%{NUMBER:response}%{NUMBER:bytes}%{IP:ip4}%{IP:ip5}
您可能希望为
myfield
IP
字段提供更可读的名称。Hth!