我使用ELK堆栈将nginx访问日志保存到elasticsearch。具体来说,我使用filebeat来收集日志,使用logstash来解析日志。我使用以下配置:
第一个
然而,我注意到由于某些原因,并不是所有的日志都被传递给elasticsearch。
172.20.0.1 - - [17/Oct/2022:08:25:22 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" "111.111.111.111"
112.111.0.1 - - [17/Oct/2022:12:43:22 +0000] "GET /favicon.ico HTTP/1.1" 404 150 "http://localhost/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" "-"
111.111.0.1 - - [17/Oct/2022:12:44:44 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" "111.111.111.111"
172.19.0.1 - - [17/Oct/2022:12:45:29 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" "78.87.79.206, 188.114.103.233"
172.18.0.1 - - [17/Oct/2022:12:46:29 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" "78.87.79.206, 188.114.103.233"
创建了索引,但是如果我通过开发工具查询索引,日志112.111.0.1 - - [17/Oct/2022:12:43:22 +0000] "GET /favicon.ico HTTP/1.1" 404 150 "http://localhost/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" "-"
没有出现。
编辑:我使用的查询如下:
GET weblogs-2022.10.17/_search
{
"size" : 100,
"query": {
"match_all" : {}
},
"sort" : [{"@timestamp":{"order": "desc"}}]
}
和结果包括在4日志,而不是5和什么我得到的一部分是如下(我不能包括所有的回报,因为它是非常大的):
{
"took" : 1,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 4,
"relation" : "eq"
}
1条答案
按热度按时间wdebmtf21#
由于当前grok模式与以下日志不匹配,因此未进行索引:
为什么不匹配?
因为在启动时IP地址后面有额外的空间,所有其他日志有1个空间,上面的日志有2个空间。
你可以在logstash中更新你的第一个grok过滤器,它也会索引那个日志。