Como canalizo logs de várias instâncias do Linux pela rede em um arquivo?

Como canalizo logs de várias instâncias do Linux pela rede em um arquivo?

Eu tenho um script de shell em execução em centenas de máquinas Linux que gera uma linha de resumo csv no final. Preciso coletar isso em um arquivo para revisar o resumo dos resultados. Existe uma maneira de transferir essa linha CSV pela rede para uma única máquina que canaliza todas elas para um único arquivo?

Talvez algo como um servidor http simples que anexe >> imprima todas as entradas em um arquivo e então o script possa executar um comando curl para publicá-lo nesse servidor?

Responder1

Uma solução simples para que centenas de sistemas enviem a saída de um aplicativo de volta para um único seria usar o netcat.

Um deles, o servidor central, é colocado netcatem um loop infinito para receber informações.

while true; do nc -l 4444; done | tee foo.csv

Então, em cada um dos hosts do aplicativo, execute

app.exe | nc foo.example.com 4444

Talvez não seja muito robusto, mas daria conta do recado.

Para uma solução mais confiável, configure rsyslogno servidor central. Então, em cada um dos hosts do aplicativo, use logger --server foo.example.com "your message here". As mensagens postadas loggerserão gravadas em um arquivo rsyslogpara posterior processamento. Possivelmente mais difícil de configurar, mas mais fácil no longo prazo.

informação relacionada