Monitora a largura de banda ao longo do tempo, excluindo certas redes?

1

Eu gostaria de monitorar o uso da largura de banda dos meus servidores Linux, mas há uma armadilha: o tráfego entre meus dois servidores não é contado contra mim, apenas o tráfego para a Internet em geral. No entanto, meus servidores têm apenas uma única interface de rede e praticamente tudo que eu tentei medições em uma base por interface. Alguém sabe de uma ferramenta que pode gerar gráficos de largura de banda, sem contar o tráfego de / para determinados intervalos de IP?

Pontos de bônus se ele gerar arquivos RRD (já posso fazer um gráfico com facilidade) e pontos de bônus duplos se ele funcionar com collectd (qualquer configuração do padrão collectd ou um plugin para ele).

    
por davr 15.02.2011 / 01:37

5 respostas

4

Supondo que você não tenha acesso a um roteador ou switch upstream que forneça a mesma visualização desses dados que o seu ISP vê, você pode usar a conta iptables em cada host para contar bytes / pacotes destinados a qualquer coisa que não seja seu outro endereço IP (ou intervalo de IP) e, em seguida, poke isso em um RRD-se.

EDITAR

Como exemplo, você pode usar algumas regras como essas no iptables para criar a contabilidade:

iptables -N ACCOUNT_IN
iptables -N ACCOUNT_OUT
iptables -I INPUT -j ACCOUNT_IN
iptables -I OUTPUT -j ACCOUNT_OUT

iptables -I ACCOUNT_IN -s ! 10.66.1.0/24
iptables -I ACCOUNT_OUT -d ! 10.66.1.0/24

Isso cria duas novas cadeias, ACCOUNT_IN e ACCOUNT_OUT. Eu então insiro saltos para estes no topo das cadeias INPUT e OUTPUT. Dentro de cada cadeia, eu adiciono uma regra sem alvo de salto para combinar em endereços remotos - para entrada, qualquer coisa que não tenha um endereço no meu local / 24 como fonte; para saída, qualquer coisa que não tenha um endereço no meu local / 24 como destino. Em seguida, os pacotes retornam dessa cadeia de volta às suas cadeias normais de ENTRADA / SAÍDA, pois não há uma regra de salto.

Para verificar os dados contábeis:

# iptables -L ACCOUNT_IN -n -v
Chain ACCOUNT_IN (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    5  2138            all  --  *      *      !10.66.1.0/24         0.0.0.0/0 

# iptables -L ACCOUNT_OUT -n -v 
Chain ACCOUNT_OUT (1 references)
 pkts bytes target     prot opt in     out     source               destination         
   15  2846            all  --  *      *       0.0.0.0/0           !10.66.1.0/24    

De lá, você pode extrair as contagens de pkt / byte e passar para rrdupdate (suponho que você esteja OK ao passar dados para um rrd, já que você disse que está tudo bem em extrair dados de um rrd. Se não, essa pergunta provavelmente já foi feita aqui).

Se você quiser zerar os contadores toda vez que os ler, passe o comando -Z (contador zero) para zerar os contadores de bytes.

Se algum de seus hosts for roteador, você também precisará fazer contabilidade na cadeia FORWARD. Provavelmente, basta inserir um salto para ACCOUNT_IN e ACCOUNT_OUT da parte superior da cadeia FORWARD e ele fará o coisa certa, mas eu não tenho pensado nisso o suficiente para ter 100% de certeza que vai funcionar

    
por 15.02.2011 / 02:28
2

Você deve conseguir fazer isso através do IPTables. No entanto, eu realmente duvido que você encontre algum software pré-escrito que possa fazer isso. O link seria um bom começo para fazer isso via IPTables.

Eu estou supondo que você não tem acesso ao switch em que você está hospedado, o que faz com que a maioria das outras sugestões até agora seja inútil.

    
por 15.02.2011 / 02:37
2

Você pode usar o bandwithd . Ele permite que você passe um filtro pcap, para que você possa excluir o tráfego entre seus servidores.

    
por 15.02.2011 / 05:02
0

Eu faço isso usando um switch que suporta o Netflow. As ferramentas do Netflow nem sempre são gratuitas, mas isso deve fazer o que você está procurando.

    
por 15.02.2011 / 02:13
0

Parece que você quer algo como ntop . Existem muitas outras ferramentas por aí, mas esta é provavelmente a mais rápida para conseguir o que você quer. Ele pode coletar o fio e relatar isso ou usar outras entradas, como o Netflow e o sFlow.

    
por 15.02.2011 / 02:39