Plugin de entrada do Logstash S3 re-varrendo todos os objetos do bucket

3

Estou usando o plug-in Logstash S3 Input para processar logs de acesso do S3.

Os registros de acesso são todos armazenados em um único bloco e existem milhares deles. Eu configurei o plug-in para incluir apenas objetos S3 com um determinado prefixo (com base na data, por exemplo, 2016-06).

No entanto, eu posso ver que o Logstash está pesquisando novamente todos os objetos no Bucket, e não levando em consideração objetos previamente analisados.

{:timestamp=>"2016-06-21T08:50:51.311000+0000", :message=>"S3 input: Found key", :key=>"2016-06-01-15-21-10-178896183CF6CEBB", :level=>:debug, :file=>"logstash/inputs/s3.rb", :line=>"111", :method=>"list_new_files"}

ou seja

A cada minuto (ou qualquer intervalo que você tenha definido), o Logstash começa no início do intervalo e faz uma chamada da API da AWS para cada objeto que encontrar. Parece fazer isso para descobrir qual é a hora da última modificação do objeto, de modo que ele possa incluir arquivos relevantes para análise. Isso, obviamente, atrasa tudo e não me fornece análise em tempo real dos registros de acesso.

Além de atualizar constantemente o prefixo para corresponder apenas aos arquivos recentes, existe alguma maneira de fazer o Logstash pular a leitura de objetos do S3 mais antigos?

Existe um parâmetro sincedb_path para o plug-in, mas isso parece estar relacionado apenas ao local em que os dados sobre qual arquivo foi analisado pela última vez são gravados.

    
por Garreth McDaid 21.06.2016 / 11:30

1 resposta

4

Este parece ser o comportamento padrão para este plugin, então ele deve ser gerenciado usando os recursos do plugin.

Basicamente, você precisa configurar o plug-in para fazer backup e excluir os objetos com um prefixo para o mesmo bloco. Dessa forma, o Logstash ignorará o objeto quando ele pesquisar o intervalo após o próximo intervalo.

Configuração da amostra:

s3 {
   bucket => "s3-access-logs-eu-west-1"
   type => "s3-access"
   prefix => "2016-"
   region => "eu-west-1"
   sincedb_path => "/tmp/last-s3-file-s3-access-logs-eu-west-1"
   backup_add_prefix => "logstash-"
   backup_to_bucket => "s3-access-logs-eu-west-1"
   interval => 120
   delete => true
 } 

Esta configuração varrerá o balde sempre em 120 segundos para objetos que começam com

2016-

Ele processará esses objetos e, em seguida, fará o backup deles no mesmo bloco com prefixo

logstash-

exclua-os.

Isso significa que eles não serão encontrados no próximo intervalo de pesquisa.

2 notas importantes:

  1. Você não pode usar o backup_add_prefix sozinho (os documentos sugerem que você pode). Você só pode usar esse parâmetro em conjunto com backup_to_bucket

  2. Verifique se a conta / função do IAM que você está usando para interagir com o S3 tem permissões de gravação para os grupos que você está usando (outros Logstash não podem excluir / renomear objetos).

por 21.06.2016 / 15:04