使用 fluentd 将 HTTP 访问日志传递给 Kibana

passing HTTP access logs to Kibana with fluentd

我正在尝试从 Kibana 查看 HTTP 访问日志,但无法这样做。

HTTP 访问日志示例。

- 127.0.0.1 - - [12/Apr/2021:12:18:45.378 +0530] "GET /pizzashack/1.0.0/menu HTTP/1.1" - - "https://localhost:9443/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36"
- 127.0.0.1 - [12/Apr/2021:12:18:45.378 +0530] "- - " 401 - "-" "-"

样本fluent.conf文件

 <source>
     @type tail
     path /logs/http_access_.log
     pos_file /logs/http_access_.log.pos
     tag httpaccess
     format /(?<host>-\s*[^ ]*)(?<user>\s*[^ ]* [^ ]*\s*)\[(?<dateNtime>[^ ]*\s*[^ ]*)\]\s*(?<request>[^ ]*\s*[^ ]*\s*[^ ]*)\s*(?<statuscode>[^ ]*)\s*(?<size>[^ ]*)\s*(?<url>[^ ]*)\s*(?<message>.*)/

 </source>

 <match httpaccess>
     @type copy
     <store>
         @type elasticsearch
         host elasticsearch
         port 9200
         include_tag_key true
         include_timestamp true
         tag_key @log_name2
         logstash_format true
         logstash_prefix access.${tag}
         flush_interval 5s
     </store>
 </match>

根据这个 site 看来格式是正确的。 但是通过以上,我无法在 Kibana 中看到日志。如果有人能帮我解决这个问题,我将不胜感激。

谢谢。

我能够使用以下格式使其工作。

format_firstline /-\s*\d{3}.\d{0,3}.\d{0,2}.\d{1,2}.\d{1,3}/
format1 /^(?<host>-\s*\d{3}.\d{0,3}.\d{0,2}.\d{1,2}.\d{1,3})(?<user>\s*[^ ]* [^ ]*\s*)\[(?<time>[^ ]*\s*[^ ]*)\]\s*(?<request>[^ ]*\s*[^ ]*\s*[^ ]*)\s*(?<statuscode>[^ ]*)\s*(?<size>[^ ]*)\s*(?<address>[^ ]*)\s*(?<agent>.*)/

谢谢。