使用 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>.*)/
谢谢。
我正在尝试从 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>.*)/
谢谢。