O que você parece querer é um componente chamado 'log shipper' (não confundir com a replicação de banco de dados). O próprio Logstash fornece um; é referido como o "agente" e está escrito em Java. Se você não quiser instalar [uma determinada versão do] Java em todos os seus servidores (o que é uma objeção bastante razoável), então há muitas alternativas.
Os remetentes de log têm algumas propriedades comuns com as quais você pode compará-las:
- eles geralmente podem arquivar os arquivos em (quase) em tempo real, fazendo sondagens (comuns) ou usando inotify;
- eles geralmente lidam bem com eventos de rotação de log;
- eles costumam ser implementados em um dos muitos idiomas;
- eles poderão ler (várias) várias fontes, incluindo vários tipos de bancos de dados ou o log de eventos do Windows;
- opções de suporte comercial estão frequentemente disponíveis, bem como opções gratuitas; as versões comerciais das gratuitas podem oferecer mais opções de entrada;
- eles diferem na disponibilidade entre plataformas;
- os custos de licença para diferentes plataformas podem variar muito (por exemplo, rsyslog no Windows versus Linux) A escalabilidade e a pegada
- feitas variam significativamente;
- eles podem (não) conseguir transmitir logs por SSL;
- eles podem (não) ser capazes de armazenar eventos se o receptor não estiver disponível;
- eles podem (não) conseguir transformar / filtrar mensagens;
- eles têm diferentes níveis de scriptabilidade;
O livro do Logstash lista alguns; como o lenhador (escrito em Go, e não empacotado pelo meu sistema operacional), e há muitos outros.
O rsyslog também pode ler arquivos, mas os custos de licenciamento para o Windows provavelmente irão colocá-lo fora; mas isso pode ser útil se você tiver um RHEL / Centos / outro dispositivo que possua o rsyslog instalado (sendo um dispositivo em geral você não tem a liberdade de instalar o que quiser, por questões de suporte).
Atualmente estou usando o nxlog, que está escrito em C; é razoavelmente pequeno, não tem tempo de execução irritante ou constrói dependências; roda no Linux e no Windows pelo menos; razoavelmente bem portado; fácil de construir em plataformas que não possuem um pacote fornecido; tem boa documentação de fadas (mas ainda pode ser melhor); um desenvolvedor responsivo; suporte comercial disponível; pode transmitir por SSL; lê a partir de um monte de entradas diferentes, incluindo arquivos, syslog, log de eventos do Windows e outros; faz algum processamento, incluindo a aplicação de um monte de tags para processamento posterior no logstash; gera saídas para um monte de coisas diferentes (estou enviando o meu para um servidor de log central, que armazena em buffer, grava em disco, rotaciona os arquivos e também envia os dados para o Logstash para ingestão no Elastic Search)
O Nxlog não é perfeito; ele tem vários bugs, particularmente em torno da análise de configuração (atente para ponto e vírgula ausente), e a semântica da configuração pode ficar um pouco confusa quando você quer tentar e fazer algo mais complexo. Eu esbarrei em pelo menos um vazamento de memória e um outro problema que requer que eu implemente alguma detecção de processo pendente por enquanto, mas, apesar disso, ainda estou razoavelmente feliz com o uso do nxlog até agora para a nossa frota. até agora, e estamos empurrando um lote de dados através dele.
No entanto, desde que você mencionou explicitamente o uso de SSH (isso é um requisito real?), você pode configurar um scp de chaves autorizadas de um arquivo e, em seguida, fazer o logstash alimentá-lo localmente; e (supondo que você chame o logstash novamente a cada vez) faça uso da capacidade do logstash de registrar em que parte do arquivo ele estava. Porém, uma coisa sobre a qual ter cuidado, você provavelmente não quer que o inode mude, então sobrescreva o arquivo usando '... > file.txt ', que substituirá o conteúdo, mas não substituirá o arquivo em si. No entanto, isso será potencialmente frustrado pela rotação de log. Você realmente quer um remetente de logs na máquina remota. O uso do rsyslog pode ser útil se houver um requisito para toque mínimo de um ambiente, embora você não tenha a capacidade de transmitir por SSL (embora talvez uma versão atualizada do rsyslog permita isso).
Espero que ajude, Cameron