Почему это exclude_lines в filebeat, исключающий все журналы?

Я использую стек ELK , и у меня он работает очень хорошо на большинстве моих серверов. Исключением является то, что у меня есть сервер gitlab, у которого есть ping к / от сервера gitlab-ci, который происходит в журнале доступа 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

Ниже приведен пример файла журнала, и я хочу заблокировать каждую строку, которая является 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)"

Я ожидал, что строки, начинающиеся с **, будут удалены, а остальные пройдут, но этого не происходит (ни одна из этих строк сейчас не проходит). Если я удалю регулярное выражение, все пройдет снова.

3
задан 7 February 2018 в 16:08
1 ответ

Если вы упростите exclude_lines -конфигурация к следующей, она будет соответствовать filebeat.

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

Я прочитал документацию exclude_lines и regexp-support , но я не выяснил причину, по которой ваше первоначальное регулярное выражение не соответствует трем строкам, поскольку они совпадают, когда я добавляю его на regexr.com и выбираю PCRE в качестве механизма регулярных выражений.

Если вы хотите выяснить, что вызвало его не совпадают. Я бы посоветовал вам удалить один и один элемент из реестра. exp до совпадения.

Сначала удалите группировку

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, будет намного легче выяснить, почему.

Надеюсь, этот ответ поможет вам в этом!

2
ответ дан 3 December 2019 в 06:54

Теги

Похожие вопросы