Script per detectar problemes de latència: Diferència entre les revisions

De Guifi.net - Wiki Català

(Contingut canviat per «El present script analitza la latència entre els diversos elements d'un segment de xarxa. En cas que la latència sigui superior a un valor prefixat a l'script, s'envia u...».)
Línia 7: Línia 7:
 
----
 
----
 
[[Media:latencies.sh]]
 
[[Media:latencies.sh]]
#!/bin/bash
 
  
# Aquest script envia pings contra elements de xarxa i genera alarmes en format e-mail
+
----
# depenent de les latencies programades com a perilloses i critiques.
+
# Josep Figueras i Franch
+
# 2012-03-13 - Versió 2.1
+
 
+
# Manual per configurar el servidor de correu:
+
# En sistemes Debian/Ubuntu:
+
# apt-get update && apt-get install ssmtp && apt-get install mailutils
+
# Editem el fitxer /etc/ssmtp/ssmtp.conf i hi afegim aquesta configuracio:
+
# AuthUser=robot.guifi@gmail.com
+
# AuthPass=robot_guifi
+
# FromLineOverride=YES
+
# mailhub=smtp.gmail.com:587
+
# UseSTARTTLS=YES
+
 
+
# Comanda per executar l'script: bash ./link-test_Manresa2Castelladral &
+
# Per matar el procés: ps aux | grep link-test_Manresa2Castelladral
+
# Busquem PID i executem kill -9 #PID
+
 
+
# I aquesta es la comanda per enviar mails des de la shell:
+
#echo "COS_DEL_MISSATGE" | mail -s "TITOL_DEL_MISSATGE" CORREU_DESTINATARI@gmail.com
+
 
+
#-----------------------------------------------------------------------------------------
+
#FUNCIO QUE ANALITZA UN DISPOSITIU DE XARXA
+
#-----------------------------------------------------------------------------------------
+
function Analitza_Host {
+
LATENCIA=`ping -n -c $NOMBRE_PINGS_PER_CALCULAR_PROMIG $1 | awk -F/ '/^rtt/ { print $5 }' | awk -F '.' '{ print $1; }'`
+
 
+
if [ ! -n "$LATENCIA" ]
+
then
+
# Afegim el missatge d'error al log
+
echo "ERROR!: [`date +%D` `date +%T`]: L'equip $1 no respon als pings!" >> $RUTA_LOG
+
 
+
# Enviem un mail al responsable del dispositiu per tal que solventi el problema
+
echo "[`date +%D` `date +%T`]: El robot de guifi.net ha detectat un problema al dispositiu $1. El dispositiu no respon als pings!" | mail -s "Problema detectat $1" $2
+
 
+
# Enviem tambe un mail a l'administrador
+
echo "[`date +%D` `date +%T`]: El robot de guifi.net ha detectat un problema al dispositiu $1. El dispositiu no respon als pings!" | mail -s "Problema detectat $1" $MAIL_ADMINISTRADOR
+
 
+
elif [ $LATENCIA -le "$LLINDAR_PERILLOS" ]
+
then
+
ESTAT_LATENCIA="OK"
+
 
+
elif [ $LATENCIA -le "$LLINDAR_CRITIC" ]
+
then
+
ESTAT_LATENCIA="PERILL"
+
 
+
# Afegim el missatge d'error al log
+
        echo "$ESTAT_LATENCIA: [`date +%D` `date +%T`]: Temps de resposta promig contra el servidor $1= $LATENCIA ms" >> $RUTA_LOG
+
 
+
else
+
ESTAT_LATENCIA="CRITIC"
+
 
+
# Afegim el missatge d'error al log
+
echo "$ESTAT_LATENCIA: [`date +%D` `date +%T`]: Temps de resposta promig contra el servidor $1= $LATENCIA ms" >> $RUTA_LOG
+
 
+
# Enviem un mail al responsable del dispositiu per tal que solventi el problema
+
echo "[`date +%D` `date +%T`]: El robot de guifi.net ha detectat un problema al dispositiu $1. Latencia= $LATENCIA ms" | mail -s "Problema detectat al dispositiu $1" $2
+
 
+
# Enviem tambe un mail a l'administrador
+
echo "[`date +%D` `date +%T`]: El robot de guifi.net ha detectat un problema al dispositiu $1. Latencia= $LATENCIA ms" | mail -s "Problema detectat al dispositiu $1" $MAIL_ADMINISTRADOR
+
 
+
fi
+
}
+
#-----------------------------------------------------------------------------------------
+
 
+
#Les variables d'entorn
+
NOMBRE_PINGS_PER_CALCULAR_PROMIG=5
+
LLINDAR_PERILLOS=40 # Si la latència és superior a aquest valor, es genera un missage de PERILL
+
LLINDAR_CRITIC=60 # Per latències superiors a aquest valor es genera un missatge CRITIC i s'envien mails als responsables
+
RUTA_LOG="/var/log/Errors_Manresa-Castelladral.log" # Ruta on guardarem els missatges d'errors detectats
+
MAIL_ADMINISTRADOR="administrador@gmail.com" # Correu electrònic de l'administrador del segment de xarxa
+
 
+
while true;
+
do
+
 
+
# Llistat de dispositius a analitzar
+
# Format: Analitza_Host DISPOSITIU_A_ANALITZAR E-MAIL_DEL_RESPONSABLE_DEL_DISPOSITIU
+
# Origen: Sant Ignasi (Manresa)
+
# Desti: Castelladral
+
Analitza_Host ManresaServerGuifi--14267.ip.guifi.net responsble1@gmail.com
+
Analitza_Host MNKoutenST1--32097.ip.guifi.net responsable2@guifi.net
+
Analitza_Host SLLTorreTelST2--29076.ip.guifi.net responsable3@gmail.com
+
Analitza_Host SLLTorreTelST3--36277.ip.guifi.net responsable4@hotmail.com
+
Analitza_Host 10.228.5.1 responsable5@gmail.com
+
 
+
# Esperem 30 minuts abans no tornem a analitzar el segment de xarxa
+
sleep 1800
+
done
+

Revisió de 19:44, 13 març 2012

El present script analitza la latència entre els diversos elements d'un segment de xarxa. En cas que la latència sigui superior a un valor prefixat a l'script, s'envia un e-mail al responsable del "trasto" i també un altre a l'administrador per tal de detectar futurs problemes greus abans que arribin a ser greus. També genera un log amb els errors lleus i greus. El propi script intenta ser "auto-explicatiu":


Media:latencies.sh


Eines de l'usuari