2 votes

Suivi de l'utilisation de la bande passante du routeur via Nagios et SNMP

Je utilise GroundWork (un cadre de surveillance construit sur Nagios) pour surveiller quelques appareils réseau via SNMP, mais je suis bloqué sur un problème avec l'utilisation de la bande passante.

La plupart des routeurs, y compris le Cisco 2800 utilisé ici, peuvent être interrogés via SNMP pour obtenir des informations sur le trafic réseau; cependant, ils renvoient ces informations sous forme de compteur, ce qui signifie "combien d'octets sont entrés ou sortis d'une interface donnée depuis que le routeur a été allumé". Ainsi, pour obtenir quelque chose de significatif de ces informations, vous devez, par exemple, interroger ces informations chaque seconde et voir de combien chaque mesure diffère de la précédente.

Groundwork/Nagios peut automatiquement gérer cela pour les données de performance, car ils utilisent RRD pour stocker ces données et RRD prend en charge le calcul des deltas entre les valeurs.

Mais comment puis-je générer une alerte lorsque l'utilisation de la bande passante dépasse un certain seuil? Nagios peut envoyer des alertes uniquement lorsque la valeur est supérieure à un seuil donné, pas en fonction de la différence entre deux mesures distinctes de la même valeur.

J'ai besoin d'un moyen de vérifier si l'utilisation de la bande passante est supérieure à un certain seuil, et de générer une alerte Nagios (et ainsi d'envoyer un e-mail) si cela se produit; je ne peux pas me fier uniquement à l'administrateur qui regarde les données de performance pour voir s'il y a un problème avec la bande passante du réseau.

2voto

Eddy Points 842

J'ai fait cela avec un script cron, qui stocke la valeur actuelle dans un fichier temporaire puis l'utilise la prochaine fois pour calculer l'utilisation de la bande passante depuis la dernière exécution.

#!/bin/bash

adresse_email=""
routeur_ip=""

# BANDE PASSANTE À 80% [ (384000bps) 48,000Bps ] - 20% = 38,400 Bps
alerteBP="76800"

dernierFichierBP="/var/log/ciscoGW.log"
dernierBP=`cat $lastBWFile | awk '{print$2}'`
dernierTemps=`cat $lastBWFile | awk '{print$1}'`

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

let diffBP=$curBP-$dernierBP
#echo "Diff BP: $diffBP"
heureActuelle=`date +%s`
let diffTemps=$heureActuelle-$dernierTemps
let alerteBP=$alerteBP*$diffTemps

echo "$heureActuelle $curBP" > $dernierFichierBP

if [ $diffBP -gt $alerteBP ]; then
#       echo "Limite dépassée!"
        echo "Bande passante utilisée pendant $diffTemps secondes: $diffBP" | mail -s "LIMITE DE BANDE PASSANTE DÉPASSÉE!!!!" $adresse_email
fi

Comme je m'intéressais davantage aux pics réels, j'ai depuis opté pour l'utilisation de rrdtool :

#démarrer il y a 15 minutes
#terminer il y a 5 minutes car les requêtes rrdtool se font toutes les 5 minutes
rrdtool fetch $FROM MAX -s -900 -e -300

1voto

Pour optimiser, remplacez snmpget -c snmap_name -v 1 $router_ip IF-MIB::ifOutOctets.2 | awk '{print$4}' par snmpget -O qv -c snmap_name -v 1 $router_ip IF-MIB::ifOutOctets.2 (une processus en moins à lancer)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X