為什麼 filebeat 中的 exclude_lines 會排除所有日誌?
我正在使用ELK Stack,並且我的大多數伺服器都執行良好。例外情況是我有一個 gitlab 伺服器,該伺服器在 gitlab-access 日誌中對 gitlab-ci 伺服器進行了 ping 操作。這種情況每秒都會發生,我想忽略它。我的正則表達式與我正在使用的正則表達式測試器中的這些行匹配,但它似乎已經停止了來自該文件的所有日誌,而不是預期的單行。
filebeat: prospectors: paths: - /var/log/gitlab/nginx/gitlab_access.log input_type: log exclude_lines: ['(.*\bPUT\b)(.*\bgitlab-ci-multi-runner).*'] document_type: gitlab_access
下面是日誌文件的範例,我想阻止
PUT
來自gitlab-ci-multi-runner
.**192.168.1.105 - - [07/Feb/2018:07:53:36] "PUT /ci/api/v1/builds/1738.json HTTP/1.1" 404 3082 "" "gitlab-ci-multi-runner 1.3.0 (1-6-stable; go1.3.3; linux/amd64)"** 192.168.1.110 - - [07/Feb/2018:07:53:37] "POST /api/v4/jobs/request HTTP/1.1" 204 0 "" "gitlab-ci-multi-runner 9.2.0 (7-2-stable; go1.7.5; windows/amd64)" **192.168.1.105 - - [07/Feb/2018:07:53:39] "PUT /ci/api/v1/builds/1738.json HTTP/1.1" 404 3082 "" "gitlab-ci-multi-runner 1.3.0 (1-6-stable; go1.3.3; linux/amd64)"** 192.168.1.110 - - [07/Feb/2018:07:53:40] "POST /api/v4/jobs/request HTTP/1.1" 204 0 "" "gitlab-ci-multi-runner 9.2.0 (7-2-stable; go1.7.5; windows/amd64)" 192.168.1.55 - - [07/Feb/2018:07:53:40] "GET / HTTP/2.0" 200 45895 "" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36" 192.168.1.55 - - [07/Feb/2018:07:53:41] "GET /assets/favicon-075eba763121a0c1f89a89ee81678bcde72e2a47cd3a42.ico HTTP/2.0" 200 1384 "https://gitlab.com/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.78 Safari/537" 192.168.1.55 - - [07/Feb/2018:07:53:41] "GET /uploads/-/system/user/avatar/21/yodaProfile.jpg HTTP/2.0" 304 0 "https://gitlab.com/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36" **192.168.1.105 - - [07/Feb/2018:07:53:42] "PUT /ci/api/v1/builds/1738.json HTTP/1.1" 404 3082 "" "gitlab-ci-multi-runner 1.3.0 (1-6-stable; go1.3.3; linux/amd64)"** 192.168.1.110 - - [07/Feb/2018:07:53:43] "POST /api/v4/jobs/request HTTP/1.1" 204 0 "" "gitlab-ci-multi-runner 9.2.0 (7-2-stable; go1.7.5; windows/amd64)"
我希望刪除以 ** 開頭的行,其餘的要通過,但這沒有發生(這些行現在都沒有通過)。如果我刪除正則表達式,一切都會再次出現。
如果您將
exclude_lines
-configuration 簡化為以下內容,它將由 filebeat 匹配。exclude_lines: ['\"PUT.*gitlab-ci-multi-runner']
我已經閱讀了exclude_lines和regexp-support文件,但我沒有弄清楚您的初始正則表達式與這三行不匹配的原因,因為當我將其添加到 regexr.com 並選擇 PCRE 作為正則表達式時它們匹配引擎。
如果您想找出導致它不匹配的原因,我建議您從正則表達式中刪除一個元素和一個元素,直到它匹配為止。
首先刪除分組
exclude_lines: ['.*\bPUT\b.*\bgitlab-ci-multi-runner.*']
然後嘗試刪除
\b
條目
exclude_lines: ['.*PUT.*gitlab-ci-multi-runner.*']
然後你應該得到類似於我的答案的東西。
exclude_lines: ['PUT.*gitlab-ci-multi-runner']
您還可以一次刪除一個和一個條目,而不是所有
\b
元素。當您找出導致 exclude_lines 不匹配的條目時,找出原因會容易得多。我希望這個答案能幫助你一路走好!