Linux: Como medir o tráfego de rede diário / mensal?

14

Eu preciso manter estatísticas do tráfego de rede diário para uma máquina Linux (CentOS 5).

Existe uma maneira de fazer isso usando ferramentas / utilitários padrão / nativos?
Ou preciso fazer um software especial para isso?

Obrigado.

    
por GetFree 28.01.2010 / 23:48

8 respostas

7

O que Zypher estava dizendo sobre o rrdtool (e qualquer outra coisa que o use como back-end - MRTG, Cacti, etc.) provavelmente está correto. O RRDTool foi projetado para ser uma ferramenta de análise de tendências históricas 'média'. Ele calcula a média e armazena os contadores em incrementos cada vez mais indefinidos, aumentando o tempo de retorno.

Isto é, no entanto, configurável configurando os RRAs apropriadamente. Eu confesso não saber absolutamente nada sobre configurá-los, no entanto, e nunca tive pessoalmente a sorte de levá-los para além do meu padrão (15 minutos, 8 horas, 1 semana, 1 mês, 1 ano). Eu recomendaria olhar para configurar os RRAs para esperar entrada diária e alimentá-lo seu contador de largura de banda do netstat. Você terá alguns dados históricos e insights muito interessantes sobre seus padrões de uso.

Para responder ao seu problema atual, sobre garantir que você não exceda o limite diário de largura de banda; Eu recomendaria pegar os contadores netstat diariamente para a interface em questão. Você pode comparar o tráfego de ontem no tempo t com os contadores de hoje no momento t e descobrir quanto foi transferido. Um script simples com um armazenamento de arquivo de texto simples do valor anterior provavelmente seria suficiente. Você poderia então desabilitar a interface se detectar largura de banda excedida ou monitorá-la ao longo do dia e notificar um administrador se estiver se aproximando do seu limite.

Para obter os bytes de entrada em um sistema OSX, você pode usar o seguinte conjunto de comandos:

netstat -ib | grep -e "$INTERFACE" -m 1 | awk '{print $7}'

Por outro lado, a saída pode ser obtida com:

netstat -ib | grep -e "$INTERFACE" -m 1 | awk '{print $10}'

Você pode colocar os contadores relevantes em um arquivo simples armazenado em algum lugar e compará-lo com:

#!/bin/bash
set -e # exit if any error occurs

previous_days_bytes_xferred='cat $flatfile_storage'
todays_bytes_xferred='netstat -ib | grep -e "$INTERFACE" -m 1 | awk '{print $10}''

if [ $((todays_bytes_xferred - previous_days_bytes_xferred)) -gt $threshold ]; then
   DO SOME STUFF
fi
echo $todays_bytes_xferred > $flatfile_storage

Basta ajustar o processamento do netstat para corresponder ao seu sistema (desde que eu saiba que você não está executando o OSX).

    
por 29.01.2010 / 05:37
25

Também sugiro usar VnStat

vnStat 1.6 by Teemu Toivola <tst at iki dot fi>

     -q,  --query          query database
     -h,  --hours          show hours
     -d,  --days           show days
     -m,  --months         show months
     -w,  --weeks          show weeks
     -t,  --top10          show top10
     -s,  --short          use short output
     -u,  --update         update database
     -i,  --iface          select interface (default: eth0)
     -?,  --help           short help
     -v,  --version        show version
     -tr, --traffic        calculate traffic
     -l,  --live           show transfer rate in real time


 eth0  /  monthly

   month         rx      |      tx      |   total
-------------------------+--------------+--------------------------------------
  Oct '09     225.70 GB  |   798.52 GB  |     1.00 TB   %%%%:::::::::::::
  Nov '09     138.46 GB  |   616.54 GB  |   755.01 GB   %%::::::::::

 eth0  /  daily

day         rx      |     tx      |  total
------------------------+-------------+----------------------------------------
   31.12.      6.56 GB  |   34.39 GB  |   40.95 GB   %%%::::::::::::::::
   01.01.      1.13 GB  |  746.92 MB  |    1.86 GB
    
por 29.01.2010 / 10:05
4

O pacote sysstat contém o utilitário sar. Sar é um "profiler" de sistema extremamente configurável, por falta de um termo melhor, que coleta várias estatísticas em intervalos pré-definidos (cron). Eles são armazenados em arquivos binários, um para cada dia, que normalmente são rotacionados semanalmente, mas isso é configurável. O programa sar pode ser usado para extrair as estatísticas desses arquivos, e esses resultados podem ser facilmente representados graficamente com qualquer programa de escritório ou gnuplot (minha preferência pessoal).

link < = Informação de Sar em link < = info do gnuplot

    
por 29.01.2010 / 00:14
4

Vnstat é um excelente monitor de tráfego diário / semanal / mensal baseado em console. Ele ainda permite monitorar o tráfego em tempo real, o que é útil.

Ele também usa muito poucos recursos do sistema;)

    
por 29.01.2010 / 07:33
2

Você deseja MRTG , que é uma ferramenta de monitoramento de rede, o que produz todos os gráficos de rede que você vê pela web (com o rdtool para transformar os números em imagens)

Se você não quiser configurá-lo, ou apenas precisar de algo mais simples, use iptables para gravar a transferência de dados.

    
por 29.01.2010 / 00:12
1

Eu usei o mrtg, é uma solução muito boa, e há outras ferramentas que parecem interessantes e que fornecem muitas informações sobre o tráfego chamado ntop uma sonda de rede, aqui encontre um link sobre a instalação do ntop no CentOS

    
por 29.01.2010 / 00:20
1

MRTG ou Cacti. O Cacti é complicado de configurar, mas fornece alguns gráficos muito bonitos. O MRTG é fácil de configurar, mas para qualquer coisa bonita ou complicada, é bem difícil.

    
por 29.01.2010 / 00:32
1

Munin é outra boa ferramenta baseada em RRD que é muito fácil de configurar; as estatísticas de rede padrão são bem básicas, mas é fácil adicionar plugins adicionais. Anexei uma cópia das estatísticas diárias e semanais em um dos meus servidores; você também recebe estatísticas mensais e anuais em uma página diferente.

Gráfico de rede Munin

    
por 29.01.2010 / 01:13