Recibir un correo cuando un dispositivo tiene talencia alta (Mikrotik)
Recibir un correo de forma automatica cuando un dispositivo tiene alta latencia (Mikrotik)
En un ambiente con múltiples clientes saber cuando un cliente tiene una alta latencia esto genera lentitud en el servicio y malestar en el cliente, en enlaces inalámbricos también puede generarse ese problema por algún ruido en la zona y saber en que momento se da la latencia alta es un dato muy útil para poder dar una mejor calidad de servicio a nuestros clientes este script les ayudara a saber cuando hay una latencia alta y lo reportara auténticamente mediante el correo electrónico enterandonos en que momento nuestra red tiene problemas de alta latencia
Para este ejercicio tendremos en cuenta el siguiente esquema, algo adicional es que esto es preferible configurarlo en el router de core desde donde tenemos acceso a todos nuestros repetidores y clientes que tengamos.
Paso 1
Para realizar esta configración nesecitamos configurar previamente nuestro correo electrónico en el router Mikrotik los pasos ya se han publicado en un post anterior, pueden revisar el siguiente link en el paso 4 http://rizolatti.blogspot.com/2018/08/backup-automatico-mikrotik-email.html una ves ya registrado nuestro correo en el Mikrotik habilitaremos el permiso de permitir aplicaciones no seguras en el correo que se registro en el Mikrotik para realizar el cambio solo se tiene que logear a la cuenta de gmail y acceder a este link para proceder con el cambio https://myaccount.google.com/lesssecureapps o podemos consultar a este link http://rizolatti.blogspot.com/2018/08/backup-automatico-mikrotik-email.html donde ya se toco el tema en el paso 6 una ves echo esto los correos enviados de parte del mikrotik nos llegaran sin problemas
ahora nos procederemos a realizar la configuracion nos dirigimos a la pestaña System/scripts y añadimos una nueva regla apretando en el símbolo de + (obviar las reglas ya existentes)
luego copiar el siguiente script el cual modifique para mis nesecidades
Script
:local Asunto "Alarma! Monitor de ping a IP"
:local addre 172.18.1.20;
:local ms 200;
:local avgRtt;
/tool flood-ping $addre count=10 do={
:if ($sent = 10) do={
:set avgRtt $"avg-rtt"
}}
:if ($avgRtt >= $ms) do={
/tool e-mail send server=74.125.31.16 port=587 user=correo password=contraseña to=correo@gmail.com from=correo@gmail.com subject=$Themes body=("Monitoring KATHERINE IP:$addre\ndelay:$avgRtt ms")
:log err "Message has been sent";
:log err "La alarma ha sido enviada.";
}
:local addre 172.18.1.20;
:local ms 200;
:local avgRtt;
/tool flood-ping $addre count=10 do={
:if ($sent = 10) do={
:set avgRtt $"avg-rtt"
}}
:if ($avgRtt >= $ms) do={
/tool e-mail send server=74.125.31.16 port=587 user=correo password=contraseña to=correo@gmail.com from=correo@gmail.com subject=$Themes body=("Monitoring KATHERINE IP:$addre\ndelay:$avgRtt ms")
:log err "Message has been sent";
:log err "La alarma ha sido enviada.";
}
le indicaremos un nombre para su propia identificacion del mismo, en este
script nos dice que monitorearemos la ip 172.18.1.20 con 10 pines consecutivos si
alguno llega o pasa mas de 200 ms entonces nos enviara un correo al correo
correo@gmail.com (debe ser el mismo correo que configuramos en
nuestro mikrotik) y nos notificara un correo con el contenido (KATHERINE
IP 172.18.1.20 indicandonos la latencia que tiene en ese momento).
Acontinuacion veremos las partes importantes del script para que nos quede mucho mas en claro y sea mas sencillo para nosotros modificar a nuestras nesecidadaes el script.
Acontinuacion veremos las partes importantes del script para que nos quede mucho mas en claro y sea mas sencillo para nosotros modificar a nuestras nesecidadaes el script.
#ip a monitorear
:local addre
192.168.88.1;
#latencia
soportada
:local ms 200;
:local avgRtt;
/tool flood-ping
$addre count=10 do={
:if ($sent = 10) do={
:set avgRtt $"avg-rtt"
}}
:if ($avgRtt >=
$ms) do={
#Configuracion
para el envio del correo
/tool e-mail send
server=<Server IP> port=587 user=<user> password=<pass>
to=to@mail.com from=from@mail.com subject=$Themes body=("Monitoring
IP:$addre\ndelay:$avgRtt ms")
:log err
"Message has been sent";
:log err "La
alarma ha sido enviada.";
}
:local addre : indica la ip a la que monitorearemos
:local ms : latencia soportada
/tool flood-ping $addre count = cantidad de
pings que eviara
/tool e-mail send server = ip del servidor
de smtp gmail
port = puerto de seguridad
user = usuario del correo
password = contraseña de la cuenta de correo
to =
quien enviara el correo(sera el correo que configuramos en nuestro mikrotik)
from = a quien se le enviara el correo (sera
el correo que configuramos en nuestro
mikrotik)
body = el
texto que se mostrara en el cuerpo del correo
Paso 2
Una ves configurado nuestro script procederemos a programarlo para que este script se ejecute cada 30 segundos asi poder sondear la ip en tiempo real, para esto nos dirigimos a ip/schedule y procedemos a crear una nueva tarea, nos aparecera una pestaña en la que indicaremos el nombre de la tarea que en nuestro caso sera katherine y le indicamos la fecha de inicio y hora de inico en el que se comensara a ejecutar la tarea, en interval indicaremos cada cuanto tiempo se ejecutara la tarea en nuestro caso sera cada 30 segundos, en On Event llamaremos al script ya creado mensionando el monbre del script.
una ves echo esto el script se ejecutara cada 30 segundos y si detecta latencia de 200 a mas ms nos notificara mediante un correo electronico.
Paso 3
Abrimos la cuenta del correo y verificaremos que nos llege los correos de notificación
Abrimos la cuenta del correo y verificaremos que nos llege los correos de notificación
Esto nos ayudara a tener de una mejor forma monitorear nuestra red y mejorar la caliadad de servicio hacia nuestros clientes aqui dejo el script para que ustedes puedan usarlo.
Script
:local addre 172.18.1.20;
:local ms 200;
:local avgRtt;
/tool flood-ping $addre count=10 do={
:if ($sent = 10) do={
:set avgRtt $"avg-rtt"
}}
:if ($avgRtt >= $ms) do={
/tool e-mail send server=74.125.31.16 port=587 user=correo password=contraseña to=correo@gmail.com from=correo@gmail.com subject=$Themes body=("Monitoring KATHERINE IP:$addre\ndelay:$avgRtt ms")
:log err "Message has been sent";
:log err "La alarma ha sido enviada.";
}
Esto es solo para saber el ping del CPE del cliente? que otros usos puedo darle?
ResponderEliminarEsto se puede usar para cualquier dispositivo de tu red al que tengas alcanse puede ser repetidores ,antenas, pc cualquier dispositivo que tenga un numero ip al que tu tengas en tu red , yo lo uso para mis clientes linales porque asi puedo descartar si es por saturacion del mismo cliente que normalmente lo es. (puedes darle el uso que tu quieras sondea la latencia de cualquier host)
EliminarEsta entrada que significa?
ResponderEliminar:if ($sent = 10) do={
:set avgRtt $"avg-rtt"
Esto nos indica que se hara el total de 10 ping para realizar el descarte, si se tiene alta latencia en algun ping con mas de 200 se enviara a la sigiente regla que se encuentra debajo.( no soy un experto en scripts ya que actualmente mikrotik no tiene ninguna certificacion en lo que es scripting, este script lo saque de un foro chino donde estaba explicado con 4 frases en chino y lo traduje para poder hacerlo mas entendible a todos los que hablamos castellano) gracias por leer :3
EliminarMuchas gracias
EliminarHola una pregunta cómo puedo hacer para que me lo haga sobre una WAN específica, tengo 2 wan y me gustaría que me indicada cuando hay latencia en la 2. Saludos
ResponderEliminarBuenas tardes Ernesto en caso quieras sensar 2 wans seria nombrar la ip ha sensar con la 8.8.8.8 para sensar un linea pero esto no te especificaria la wan en especifica en caso sea 2 wans , la verdad nunca se me habia ocurrido hacer eso se puede sensar una wan, habria que forzar para redirigirlo por una interface lo cual aun no he pensado como hacerlo boy ha hacer unas pruebas y lo hare en un articulo por separado para usted para que tenga una idea calara de como monitorear wans.
Eliminarhola como te va, justamente en este codigo me da un error pero no se porque. Me ayudas?
ResponderEliminar:set avgRtt $"avg-rtt"