Monitorando o uso da largura de banda do roteador via Nagios e SNMP

2

Estou usando o GroundWork (uma estrutura de monitoramento construída sobre o Nagios) para monitorar alguns dispositivos de rede via SNMP, mas estou preso um problema com o uso da largura de banda.

A maioria dos roteadores, incluindo o Cisco 2800 usado aqui, pode ser consultada via SNMP para informações de tráfego de rede; no entanto, eles retornam essas informações na forma de um contador, significando "quantos bytes entraram ou saíram de uma determinada interface desde que o roteador foi ligado". Então, para obter algo significativo dessa informação, você precisa, por exemplo, consulte essas informações a cada segundo e veja quanto cada medida difere da anterior.

O Groundwork / Nagios pode gerenciar isso automaticamente para dados de desempenho, porque eles usam o RRD para armazenar esses dados e o RRD suporta a computação de deltas entre valores.

Mas como posso gerar um alerta quando o uso da largura de banda excede um certo limite? O Nagios pode enviar alertas somente quando um valor está acima de um determinado limite, não baseado na diferença entre duas medidas distintas do mesmo valor.

Eu preciso de uma maneira de verificar se o uso da largura de banda está acima de um certo limite, e gerar um alerta Nagios (enviando um e-mail) se isso acontecer; Eu não posso confiar apenas no administrador que olha dados de desempenho para ver se algo está errado com a largura de banda da rede.

    
por Massimo 25.11.2009 / 15:51

2 respostas

2

Eu fiz isso com um script cron, armazena o valor atual em um arquivo temporário e, da próxima vez, usa-o para calcular a utilização da largura de banda desde a última execução.

#!/bin/bash

email_address=""
router_ip=""

# 80% BANDWIDTH [ (384000bps) 48,000Bps ] - 20% = 38,400 Bps
alertBW="76800"

lastBWFile="/var/log/ciscoGW.log"
lastBW='cat $lastBWFile | awk '{print$2}''
lastTime='cat $lastBWFile | awk '{print$1}''

curBW=' snmpget  -c snmap_name -v 1 $router_ip IF-MIB::ifOutOctets.2  | awk '{print$4}''

let diffBW=$curBW-$lastBW
#echo "Diff BW: $diffBW"
timeNow='date +%s'
let diffTime=$timeNow-$lastTime
let alertBW=$alertBW*$diffTime

echo "$timeNow $curBW" > $lastBWFile

if [ $diffBW -gt $alertBW ]; then
#       echo "Over limit!"
        echo "Bandwith used over $diffTime seconds: $diffBW" | mail -s "BANDWIDTH OVER LIMIT!!!!" $email_address
fi

Desde que eu estava mais interessado em picos reais, passei a usar o rrdtool:

#start 15 minutes ago
#end 5 minutes ago since rrdtool queries every 5 minutes 
rrdtool fetch $FROM MAX -s -900 -e -300 
    
por 25.11.2009 / 16:02
1

para otimizar, substituir snmpget -c snmap_name -v 1 $ router_ip IF-MIB :: ifOutOctets.2 | awk '{print $ 4}' by snmpget -O qv -c snmap_name -v 1 $router_ip IF-MIB::ifOutOctets.2 (um processo a menos para iniciar)

    
por 23.06.2010 / 23:40