Script per detectar problemes de latència
De Guifi.net - Wiki Català
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":
- !/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