Por que isso exclude_lines no filebeat excluindo todos os logs?

3

Estou usando ELK Stack , e eu tenho funcionado muito bem para a maioria dos meus servidores. A exceção é que eu tenho um servidor gitlab que tem um ping para / de um servidor gitlab-ci que acontece no log de acesso do gitlab. Isso acontece a cada segundo e eu gostaria de ignorá-lo. Meu regex corresponde a essas linhas nos testadores de regex que estou usando, mas parece que parou todos os logs vindos desse arquivo, em vez das linhas únicas esperadas.

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

Abaixo está um exemplo do arquivo de log e eu quero bloquear todas as linhas que são PUT do 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)"

Eu esperava que as linhas que começam com ** fossem removidas, e o restante, mas isso não está acontecendo (nenhuma dessas linhas consegue passar agora). Se eu remover o regex, tudo passa novamente.

    
por trueCamelType 07.02.2018 / 15:08

1 resposta

2

Se você simplificar sua exclude_lines -configuration para o seguinte, ela será correspondida por filebeat.

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

Eu li as exclude_lines e a documentação do apoio ao regexp , mas eu não figurei a razão pela qual o seu regexp inicial não combina com as três linhas, já que elas combinam quando eu adiciono o regexr.com e escolho o PCRE como o mecanismo de regex.

Se você quiser descobrir o que causou a não correspondência, sugiro que você remova um e um elemento do regexp até que ele corresponda.

Primeiro, remova o agrupamento

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

Em seguida, tente remover as entradas \b

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

Então você deve chegar a algo semelhante à minha resposta.

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

Você também pode remover uma e uma entrada de cada vez, e nem todos os elementos \b . Quando você descobre qual entrada fez com que exclude_lines não correspondam, será muito mais fácil descobrir o motivo.

Espero que esta resposta o ajude pelo caminho!

    
por 08.02.2018 / 10:04