Pipe diretamente para o Logstash?

1

Gostaria que meus dados de log de servidores, como o Nginx, fossem diretamente para o Logstash em uma rede. O Logstash tem manipuladores de soquete TCP e UDP embutidos que seriam perfeitos para receber os dados, mas enviá-los é um problema. Eu sei que existe o remetente e o que não é, mas não ter que gerenciar logs em disco seria bom para projetos em que esses dados de log não são tão importantes (como servidores de desenvolvimento internos).

Existe uma maneira engenhosa de criar um soquete, mas um com um caminho no sistema de arquivos para o qual o Nginx escreveria como faria com qualquer outro arquivo de log? Supondo que isso seja possível, como posso configurar o buffering e a reconexão? Eu odiaria que o soquete morresse e a contrapressão nos logs começasse a amarrar o servidor fazendo o registro.

    
por Brad 16.08.2015 / 06:29

2 respostas

2

Eu não tentei, mas um pipe nomeado com netcat no final provavelmente faria o truque. Caso o netcat morra, você deve executá-lo sob uma estrutura de supervisão de processo (como daemontools, runit ou systemd) para que ele seja reproduzido automaticamente.

    
por 16.08.2015 / 06:36
1

Eu não recomendaria isso como uma solução de longo prazo, mas pode ser bom depurar se o logstash ou o remetente está funcionando conforme o esperado.

No lado do logstash:

input {
  tcp {
    port => 9000
  }
}

Do lado do seu cliente:

cat logfile.log | nc logstash-server 9000
    
por 20.04.2016 / 02:11