Script per detectar problemes de latència

De Guifi.net - Wiki Català

Revisió de 19:36, 13 març 2012; Jfigueras (Discussió | contribucions)

(dif) ←Versió més antiga | Versió actual (dif) | Versió més nova→ (dif)

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":

  1. !/bin/bash
  1. Aquest script envia pings contra elements de xarxa i genera alarmes en format e-mail
  2. depenent de les latencies programades com a perilloses i critiques.
  3. Josep Figueras i Franch
  4. 2012-03-13 - Versió 2.1
  1. Manual per configurar el servidor de correu:
  2. En sistemes Debian/Ubuntu:
  3. apt-get update && apt-get install ssmtp && apt-get install mailutils
  4. Editem el fitxer /etc/ssmtp/ssmtp.conf i hi afegim aquesta configuracio:
  5. AuthUser=robot.guifi@gmail.com
  6. AuthPass=robot_guifi
  7. FromLineOverride=YES
  8. mailhub=smtp.gmail.com:587
  9. UseSTARTTLS=YES
  1. Comanda per executar l'script: bash ./link-test_Manresa2Castelladral &
  2. Per matar el procés: ps aux | grep link-test_Manresa2Castelladral
  3. Busquem PID i executem kill -9 #PID
  1. I aquesta es la comanda per enviar mails des de la shell:
  2. echo "COS_DEL_MISSATGE" | mail -s "TITOL_DEL_MISSATGE" CORREU_DESTINATARI@gmail.com
  1. -----------------------------------------------------------------------------------------
  2. FUNCIO QUE ANALITZA UN DISPOSITIU DE XARXA
  3. -----------------------------------------------------------------------------------------

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 }

  1. -----------------------------------------------------------------------------------------
  1. 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

  1. Llistat de dispositius a analitzar
  2. Format: Analitza_Host DISPOSITIU_A_ANALITZAR E-MAIL_DEL_RESPONSABLE_DEL_DISPOSITIU
  3. Origen: Sant Ignasi (Manresa)
  4. 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

  1. Esperem 30 minuts abans no tornem a analitzar el segment de xarxa

sleep 1800 done

Eines de l'usuari