Lendo o uso da largura de banda da NIC instantaneamente

1

Eu quero criar um script que seja executado em um servidor linux, esse script deve ler o uso da largura de banda das NICs instaladas em outros servidores e, em seguida, armazená-las no memcached.

Então eu preciso de um comando que leia o uso da largura de banda de outros servidores na mesma LAN, e o comando deve ser o mais rápido possível.

Obrigado,

    
por wael34218 26.03.2011 / 18:09

5 respostas

5

Não há comando mágico que possa ler apenas parâmetros de outros servidores. A menos que você configure e use o SNMP. Note que você não pode ler uma taxa, você só pode ler um total até o momento do tráfego transmitido / recebido.

O

mrtg pode ser o caminho que você deseja seguir para chegar lá. Ele fará os cálculos das taxas de largura de banda e as armazenará em um RRD. Você pode então 'instantaneamente' consultar os RRDs.

    
por 26.03.2011 / 18:32
3

Eu criaria um script de shell que usa o SSH para executar um comando ifconfig remotamente e analisar a saída para obter os valores RX bytes: e TX bytes: (padrão grep / sed / awk). Eu passaria esses valores para um script PHP / Python / Perl / Ruby (qualquer que seja sua preferência) que os armazena no memcached. Como alternativa, você pode escrever o script inteiro nesse idioma. Eu configuraria o SSH para usar chaves públicas / privadas para evitar ter que usar senhas em seus scripts.

A outra opção, como MikeyB, mencionada seria configurar um aplicativo de monitoramento mais completo em seus servidores, que gravaria o uso da largura de banda da rede diretamente.

    
por 26.03.2011 / 18:42
2

A instalação de munin-node em seus servidores e a configuração de um munin server proporcionará a você uma saída gráfica por interface por máquina. A resolução dos dados é fixada em intervalos de cinco minutos. Conforme observado, os dados para a resolução atual de largura de banda não estão disponíveis como tal. Ele precisa ser derivado por amostragem de contadores ao longo do tempo. A utilização é derivada de (delta real) / (taxa * período).

Munin reunirá várias outras informações que podem ser úteis ao rastrear gargalos e outros problemas. Também pode ser configurado para alarmar quando os valores se dispersam fora dos limites configurados.

EDIT: Se você quiser os valores mais recentes, você pode escrever um script que irá extrair o último exemplo do (s) arquivo (s) rrd. Isso seria para a última amostra de 5 minutos.

Infelizmente, o uso de largura de banda não é rastreado diretamente. Se você precisar de leituras relativamente instantâneas, precisará consultar os contadores, aguardar algum período de tempo e consultar os contadores novamente. Você poderia então calcular o uso da largura de banda. Você pode usar munin-node para consultar os contadores. O comando para buscar os contadores é fetch ip_eth0 . Os dados de configuração contêm os dados da linha de base para utilização completa. Quanto menor o período que você espera, maior o erro que você receberá em sua amostra.

    
por 26.03.2011 / 20:37
1

Cerca de 12 anos atrás eu estava trabalhando em um projeto para ISP e escrevi um script em Perl + SMNP que lia número de bytes transmitidos / recebidos de dezenas de servidores de acesso a cada minuto, armazenava em um banco de dados e fazia tudo tipo de cálculos estatísticos sobre esses dados. Atualmente existe um pacote RRDtool para isso (o MRTG é um predecessor). Mas a idéia geral permanece - você pode ler o número de bytes recebidos / transmitidos praticamente de qualquer dispositivo através do SNMP. Se você está lendo isso de uma placa de rede, pode haver outras opções disponíveis, mas eu acho que o princípio é o mesmo.

    
por 27.03.2011 / 00:35
1

Eu uso dois programas em scripts bash com apenas algumas linhas para me dar médias de largura de banda por 30 segundos além das médias de 5 minutos do MRTG (o que é ótimo para uso histórico de banda em vez de uso "ao vivo").

bwm-ng e ifstat são fáceis de criar scripts. O primeiro permite gerar em HTML e CSV também.

    
por 26.03.2011 / 21:24