web-dev-qa-db-ja.com

filebeatのexclude_linesがすべてのログを除外するのはなぜですか?

ELK Stack を使用していますが、ほとんどのサーバーで問題なく動作しています。例外は、gitlab-accessログで発生するgitlab-ciサーバーとの間でpingを実行するgitlabサーバーがあることです。これは毎秒発生しますが、無視したいと思います。私の正規表現は、使用している正規表現テスターのこれらの行と一致しますが、予期された単一行ではなく、そのファイルからのすべてのログを停止したようです。

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

以下はログファイルの例です。gitlab-ci-multi-runnerからPUTであるすべての行をブロックしたいと思います。

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

**で始まる行が削除され、残りの行が通過することを期待していましたが、これは発生していません(これらの行のいずれも現在通過していません)。正規表現を削除すると、すべてが再び通り抜けます。

3
trueCamelType

exclude_lines-構成を次のように簡略化すると、filebeatと一致します。

exclude_lines: ['\"PUT.*gitlab-ci-multi-runner']

exclude_linesregexp-support のドキュメントを読みましたが、最初の正規表現が3行に一致しないため、それらが一致しない理由がわかりませんでした。それをregexr.comに追加し、正規表現エンジンとしてPCREを選択したとき。

一致しなかった原因を知りたい場合は、一致するまで正規表現から1つの要素を削除することをお勧めします。

最初にグループ化を削除します

exclude_lines: ['.*\bPUT\b.*\bgitlab-ci-multi-runner.*']

次に、\bエントリを削除してみます

exclude_lines: ['.*PUT.*gitlab-ci-multi-runner.*']

次に、私の答えに似たものに到達する必要があります。

exclude_lines: ['PUT.*gitlab-ci-multi-runner']

すべての\b要素ではなく、一度に1つずつエントリを削除することもできます。 exclude_linesが一致しない原因となったエントリを特定すると、その理由を見つけるのがはるかに簡単になります。

この答えがあなたに役立つことを願っています!

3
pkhamre