How to Setup an Instant Message Notification for MikroTik Routers

Hi

These days of quarantine because of Covid-19 I started making some livestream on youtube for different matters in MikroTik since I saw that many people like to watch youtube videos for learning and not read books :slight_smile:

One thing of interest was the topic on how to receive instant notifications for different data from MikroTik routers. Videos are at:

  1. https://youtu.be/IxxP3ZcdQG4
  2. https://youtu.be/pyjQjBBtxQA

Scripts that I have used are from different sources on the web but tailored for Telegram notification.

Netwatch simple script for checking hosts:

:local sub1 ([/system identity get name])
:local sub2 ([/system clock get time])

{
/ tool fetch "https://api.telegram.org/bot993515477:AAGYAgl0HbUi64F0-22xElS_OMgEqpQCfY0/sendMessage?chat_id=-483537716&text=($sub1) - PING is up for XXXX at $sub2."
}
/file remove number=[find where name~"send"]

Script for board and CPU temperature for telegram. Found here: http://forum.mikrotik.com/t/script-to-monitor-temperature/115444/1 but tailored a bit the values and way of notification

:global "tempstatus"
:global "templaststatus"
:global "cputempstatus"
:global "cputemplaststatus"
:global "systemtemp" [/system health get temperature]
:global "cputemp" [/system health get cpu-temperature]
:if (systemtemp > "45") do={:set "tempstatus" "system temp is too high"}
:if (systemtemp > "60") do={:set "tempstatus" "system temp is critical"}
:if (systemtemp < "45") do={:set "tempstatus" "system temp is within spec"}
:if (cputemp > "65") do={:set "cputempstatus" "cpu temp is too high"}
:if (cputemp > "75") do={:set "cputempstatus" "cpu temp is critical"}
:if (cputemp < "64") do={:set "cputempstatus" "cpu temp is within spec"}

:if ($"tempstatus" != $"templaststatus") do {
/ tool fetch "https://api.telegram.org/bot993515477:AAGYAgl0HbUi64F0-22xElS_OMgEqpQCfY0/sendMessage?chat_id=-483537716&text=Router $[/system identity get name] has a temperature alert. $[/system clock get date] $[/system clock get time] -> $tempstatus - $systemtemp* Celsius)"
:log info "Telegram notification sent about system $tempstatus status"
:set "templaststatus" $"tempstatus"
}
:if ($"cputempstatus" != $"cputemplaststatus") do {
/ tool fetch "https://api.telegram.org/bot993515477:AAGYAgl0HbUi64F0-22xElS_OMgEqpQCfY0/sendMessage?chat_id=-483537716&text=Router $[/system identity get name] has a temperature alert. $[/system clock get date] $[/system clock get time] -> $cputempstatus - $cputemp* Celsius)"
:log info "Telegram notification sent about system $cputempstatus status"
:set "cputemplaststatus" $"cputempstatus"
}
/file remove number=[find where name~"Celsius"]

Stay safe! :slight_smile: