Elasticsearch索引不包含所有的nginx访问日志

rjjhvcjd  于 2022-11-02  发布在  Nginx
关注(0)|答案(1)|浏览(111)

我使用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"
    }
wdebmtf2

wdebmtf21#

由于当前grok模式与以下日志不匹配,因此未进行索引:

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" "-"

为什么不匹配?

因为在启动时IP地址后面有额外的空间,所有其他日志有1个空间,上面的日志有2个空间。
你可以在logstash中更新你的第一个grok过滤器,它也会索引那个日志。

grok {
        match => [ "message" , "%{COMBINEDAPACHELOG}+%{GREEDYDATA:http_x_forwarded_for}", "%{IPORHOST:clientip}%{SPACE}%{HTTPDUSER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:referrer} %{QS:agent} %{GREEDYDATA:http_x_forwarded_for}"]
    }

相关问题