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.";
}


 

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.



#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



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 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.";
}

Comentarios

  1. Esto es solo para saber el ping del CPE del cliente? que otros usos puedo darle?

    ResponderEliminar
    Respuestas
    1. Esto 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)

      Eliminar
  2. Esta entrada que significa?

    :if ($sent = 10) do={
    :set avgRtt $"avg-rtt"

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

      Eliminar
  3. Hola 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

    ResponderEliminar
    Respuestas
    1. Buenas 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.

      Eliminar
  4. hola como te va, justamente en este codigo me da un error pero no se porque. Me ayudas?

    :set avgRtt $"avg-rtt"

    ResponderEliminar

Publicar un comentario

Entradas populares