local cpuarray local rebootIfHigh false set cpuarray ([/system resource get value-name=cpu-load]) #Change the value below to change the number of CPU load sample to average local cpusample 20 for i from=1 to=[$cpusample -1] do={ delay 950ms; set cpuarray ([/system resource get value-name=cpu-load],$cpuarray) } put $cpuarray local totalcpuarray 0 #calculating the average foreach value in=$cpuarray do={ set totalcpuarray ($totalcpuarray + $value)} :put $totalcpuarray local avgcpu ($totalcpuarray / [:len $cpuarray]) if ($avgcpu > 65) do={ :global ConnectionAvailable $ConnectionAvailable if ($ConnectionAvailable=true) do={ global CHATID global BOTID local maxcpu ($cpuarray->0) local mincpu ($cpuarray->0) foreach i in=$cpuarray do={ if ($i > $maxcpu) do={ set maxcpu $i} if ($i < $mincpu) do={ set mincpu $i} } local sendToTelegram ("Mikrotik ".[/system resource get value-name=board-name]."(".[/sy id get value-name=name].") :%0A\E2\9A\A0 \E2\9A\A0 CPU Load Report%0AMax: $maxcpu%0AMin: $mincpu%0AAverage: $avgcpu%25%0ACPU Samples: $cpusample%0AReboot if CPU sample show highload: $rebootIfHigh") /tool fetch url="https://api.telegram.org/bot$BOTID/sendMessage\?chat_id=$CHATID&text=$sendToTelegram&parse_mode=html" keep-result=no; } else={ log warning message="Cannot send message to telegram. is internet connected?" } if ($rebootIfHigh = true) do={/system reboot} } else={ nothing }