Que software posso usar para recuperar arquivos de log de vários servidores remotos via SSH? [fechadas]

1

Eu sei que posso fazer isso usando scripts, mas gostaria de saber se existe algo como "ready made" software que me permite configurar o host (e caminhos de arquivo) que eu gostaria de buscar (em intervalos regulares) de?

Estou planejando configurar o LogStash para analisar o log (e enviá-los para um armazenamento de log centralizado), mas muitos dos logs que o LogStash analisará residem em arquivos em hosts remotos. Se um software criado para isso já existir, isso simplificaria o trabalho de configuração da recuperação de arquivos de log.

    
por sbrattla 25.09.2014 / 10:20

1 resposta

4

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

    
por 25.09.2014 / 12:00