Linux: monitoramento do tráfego de rede e número de conexões

1

Preciso coletar determinados dados de monitoramento a cada minuto e enviá-los para um servidor de monitoramento. A origem desses dados deve ser analisada usando as ferramentas padrão do Linux. Por exemplo, para monitorar o número de conexões atuais a cada minuto, eu uso netstat -nat | awk '{print $6}' | sort | uniq -c | sort -n e, em seguida, extrai os números necessários usando, novamente, awk.

Agora também preciso monitorar:

  • tráfego de rede (envio / recebimento de dados por minuto)
  • número de recém conexão estabelecida no último minuto

Por favor, dê-me dicas para ferramentas que produziriam grep -able e awk -produção saida.

Observação: as medições são feitas em uma máquina dedicada, portanto, não importa se eu recebo dados para uma interface (eth0) ou para o host inteiro.

Nota: eu preciso apenas de conexões TCP.

    
por Ivivi Vavava 06.12.2011 / 18:03

3 respostas

2

Regras de iptables que são configuradas para ACEITAR todo o tráfego e todos os pacotes SYN (novas conexões) podem ser usados como contadores

iptables -A INPUT -j ACCEPT 
iptables -A INPUT --protocol tcp --syn -j ACCEPT

execute

iptables --list -v -n -Z

e canalizar através de muitos tipos de gato cortado e comandos semelhantes conforme necessário para obter seus números. O -Z irá atomicamente zerar os contadores toda vez que você rodar isto, então não há condição de corrida onde você perde alguns pacotes durante o processo de contagem.

    
por 08.12.2011 / 05:01
0

Para o tráfego de rede: netstat -in ou veja mais detalhadamente os contadores estatísticos fornecidos por ethtool -S IFACE .

Em ambos os casos, você precisa construir o delta entre duas medidas.

Recém-estabelecido ... parece estar relacionado a "conexões atuais" delta ou diff ao valor anterior.

BTW - você mencionou um servidor de monitoramento. O servidor de monitoramento pode ser capaz de fazer tudo isso por conta própria apenas observando os dados SNMP. Ative o snmpd e aproveite ...

    
por 06.12.2011 / 22:42
0

Com a ajuda de outras pessoas, misturadas com as próprias ideias, agora faço o seguinte para monitorar o número de conexões e tráfego atual periodicamente. (infelizmente, ainda não implementado o número de conexões recém-estabelecidas).

Conexões (atual)

OUTPUT='netstat -nat | awk '{print $6}' | sort | uniq -c | sort -n'

ESTABLISHED='echo "${OUTPUT}" | grep ESTABLISHED | awk '{print $1}''                                                      
LISTEN='echo "${OUTPUT}" | grep LISTEN | awk '{print $1}''

Tráfego (por minuto)

OUTPUT='(LANG='' && ifstat -i eth0 60 1 | sed '3!d')'

IN='echo "${OUTPUT}" | awk '{print $1}''
OUT='echo "${OUTPUT}" | awk '{print $2}''
    
por 28.12.2011 / 14:04