Verificando a memória em vários RPi's com um comando

0

Então eu tenho 3 Pi Raspberry's ativos. Eu quero verificar sua memória usando um comando apenas no console de um dos RPIs. A primeira coisa que me veio à mente foi usar sshpass assim:

free -h & sshpass -p 'password' ssh pi@ip2 free -h & sshpass -p 'password' ssh pi@ip3 free -h

Este comando mostra a memória do 1º e 2º RPi. No entanto, nenhuma informação do 3º RPi é mostrada.

Alguma sugestão sobre como eu poderia obter as informações de memória desejadas para todos os 3 RPIs ativos?

    
por user75374 07.12.2017 / 13:08

1 resposta

1

Bem, primeiro sugiro usar a autenticação de chave pública com SSH, como sugerido pelo RubberStamp nos comentários, que reduzirá significativamente o tamanho da linha de comando.

Agora, se você quiser algo mais simples do que isso, precisará realizar mais alguns trabalhos de configuração, mas qualquer solução desse tipo geralmente permitirá que você faça muito mais do que apenas verificar a memória livre.

Existem duas abordagens que você pode seguir:

  1. Crie uma configuração de monitoramento do sistema que você possa consultar. Isso tem a vantagem de que você também pode ver dados históricos e, dependendo da ferramenta, pode nem precisar fazer login para obter as informações desejadas.
  2. Configure uma ferramenta de orquestração para permitir que você consulte facilmente todos os três sistemas diretamente ao mesmo tempo. Isso não permitirá que você rastreie dados históricos (embora possa facilitar a configuração e a manutenção do monitoramento do sistema que pode fazer isso), mas também pode ser usado para uma grande variedade de outras coisas, como automatizar o gerenciamento de software nos três sistemas.

As opções populares para a primeira abordagem incluem:

  • Collectd : É o que a maioria dos sistemas pré-construídos (como firewalls e sistemas NAS) usam. Ele pode ser um pouco ávido em recursos e exige um esforço significativo para configurar, mas oferece ótimas opções para coleta de dados e flexibilidade insana na recuperação de dados. Se você seguir esse caminho, sugiro configurar um sistema dedicado para armazenar os dados.

  • Netdata : Isso é o que eu uso em todos os meus sistemas. Ele lida com a maior parte do trabalho de configuração e usa uma quantidade minúscula de recursos em comparação ao collectd, mas precisa de algum trabalho extra para armazenar dados persistentemente e rastreia dados da última hora por padrão (e aumenta o uso de recursos).

Opções populares para a segunda abordagem incluem:

  • Ansible : Morto simples de usar, instalá-lo em um sistema, e você é bom de ir (o único A dependência para sistemas gerenciados através do Ansible já está instalada em quase todas as distribuições Linux modernas). A configuração é simples (você literalmente só precisa dizer quais sistemas você quer gerenciar e certificar-se de ter autenticação de trabalho via SSH), e tem provisões para apenas emitir comandos únicos para tudo.

  • Puppet : Não é tão fácil de configurar quanto o Ansible (requer software rodando em todos os sistemas gerenciados, assim como o sistema fazendo o gerenciamento), mas ainda muito popular. Eu nunca usei eu mesmo, então não posso comentar muito além disso.

  • Chef : Similar ao Puppet, também muito popular, e também algo que não posso comentar mais porque não usei isso sozinho.

  • PolySH : Um simples invólucro SSH projetado para fazer praticamente exatamente o que você está tentando fazer (exceto é projetado especificamente para uso interativo). Não requer nenhum suporte especial nos sistemas de destino além do funcionamento da autenticação SSH. Opções semelhantes podem ser encontradas consultando os HOWTOs básicos de gerenciamento de cluster (como a maioria dessas ferramentas foram projetadas para o cluster Beowulf).

por 07.12.2017 / 21:13