Het script meet het processorgebruiksniveau van het MikroTik-apparaat na een bepaalde tijd. Berekent de gemiddelde processorbelasting. Stuurt een melding per e-mail of Telegram-bericht wanneer de CPU-belastingdrempel wordt overschreden, evenals de dynamiek van de CPU-belasting.
Het script kan ook worden gebruikt om de CPU-belasting te controleren en de resultaten naar het MikroTik-apparaatlogboek te schrijven. U kunt de mogelijkheid toevoegen om gegevens op te slaan in een bestand.
Inhoud
Artikel in andere talen:
?? – MikroTik Script: Device processor overload notification
?? – MikroTik Script: Notificación de sobrecarga del procesador del dispositivo
?? – MikroTik Скрипт: Уведомление о перегрузке процессора устройства
?? – MikroTik Script: Notification de surcharge du processeur de périphérique
?? – MikroTik Script: Benachrichtigung über Überlastung des Gerätes Prozessors
Beschrijving van het script
Specificeer de overschrijdingsdrempel (percentage van CPU-belasting) – DeviceAverageLoadThreshold en het aantal metingen – NumberOfMeasurements. Meetinterval 2 seconden. Als de drempelwaarde wordt overschreden, geeft het bericht de meetresultaten weer om de dynamiek van de belasting te beoordelen.
Stel DeviceAverageLoadThreshold niet te hoog in – dit is een gemiddelde waarde, begin bij 40% en als het apparaat geen problemen veroorzaakt tijdens deze belasting, verhoog dan geleidelijk de drempel van het script.
Als een reeds lopende scriptinstantie wordt gevonden tijdens het uitvoeren van het “MikroTik processor load check” -script, zal het script niet tweemaal worden uitgevoerd en zal er een waarschuwing worden weergegeven in het apparaatlogboek.
Elke keer dat het script wordt uitgevoerd, zelfs als de AverageCPULoad-drempel niet wordt overschreden, wordt een regel als deze naar het apparaatlogboek geschreven:
Average CPU load = 6%
Dit is handig om te testen, maar u kunt commentaar geven op deze regel of deze verwijderen:
#:log info "Average CPU load = $AverageCPULoad%";
Het script stuurt een melding naar e-mail en Telegram-bericht met behulp van de functies:
Het bericht bevat:
- Gemiddelde processorbelasting (uitgevoerde metingen);
- CPU-model van apparaat;
- Script Responsdrempel (CPU-belasting);
- Het aantal uitgevoerde metingen;
- CPU-belasting voor elke meting.
Als u geen van de soorten meldingen nodig heeft, verwijdert u de oproepsectie uit de scripttekst.
Maak een script
Om het script uit te voeren, heb je toestemming nodig: read, write, test, policy.
[System] -> [Scripts] -> [+] -> [Name: CPUOverloadCheck] -> [Policy: read, write, test, policy]
Scriptcode:
:local DeviceAverageLoadThreshold 25;
:local NumberOfMeasurements 5;
:local DeviceName [/system identity get name];
:local Time [/system clock get time];
:local Date [/system clock get date];
:local CPUModel [/system resource get cpu];
:local Load 0;
:local Message "";
:for Measurement from=1 to=$NumberOfMeasurements do={
:local CPULoad [/system resource get cpu-load];
:set Load ($Load + $CPULoad);
:set Message ($Message . [:tostr $CPULoad] . "% ");
:delay 5s;
}
:local AverageCPULoad ($Load / $NumberOfMeasurements);
:log info "Average CPU load = $AverageCPULoad%";
if ($AverageCPULoad > $DeviceAverageLoadThreshold) do={
:set Message "CPU $CPUModel utilization exceeded $DeviceAverageLoadThreshold% threshold. Result of $NumberOfMeasurements CPU load measurements: $Message";
# START SEND EMAIL
:local SendTo "notify@mhelp.pro";
:local Subject "\F0\9F\A5\B5 CPU Average Overload $AverageCPULoad%: $DeviceName [$Date $Time]";
:local MessageText "$Message";
:local FileName "";
:local SendEmail [:parse [/system script get SendEmailFunction source]];
$SendEmail SendTo=$SendTo TextMail=$MessageText Subject=$Subject FileName=$FileName;
# END SEND EMAIL
# START SEND TELEGRAM
:local MessageText "\F0\9F\A5\B5 <b>$DeviceName: CPU Average Overload $AverageCPULoad%.</b> $Message";
:local SendTelegramMessage [:parse [/system script get MyTGBotSendMessage source]];
$SendTelegramMessage MessageText=$MessageText;
# END SEND TELEGRAM
}
Voeg script toe aan planner
Om het script uit te voeren, heb je toestemming nodig: read, write, test, policy.
Geef in het taakscript in de variable ScriptName de naam van het script op, in het voorbeeld CPUOverloadCheck. Dit is nodig om een reeds lopend script te controleren.
In normale gevallen is het controle-interval 5 minuten, maar u kunt het controle-interval verkorten om een betere diagnose van het apparaat te krijgen.
Taak aanmaken:
[System] -> [Schedule] -> [+] -> [Name: CPUOverloadCheck] —> [Interval: 00:05:00] -> [Policy: read, write, policy, test]
Scriptcode:
:local ScriptName "CPUOverloadCheck";
:local ScriptRunning [system script job find where script=$ScriptName];
:if ($ScriptRunning) do={
:log info "The script $ScriptName cannot be run, the script is already running (Change the NumberOfMeasurements to reduce the script)";
} else={
/system script run $ScriptName;
}
? Advies: als u veel scripts gebruikt, voegt u een offset toe aan de parameter Starttijd (zie screenshot) om de gelijktijdige belasting te verminderen.
? In dit artikel wordt besproken: Hoe een script te maken om de processoroverbelasting van een MikroTik-apparaat te controleren en een e-mailmelding of Telegram-bericht te verzenden. Nu kunt u de controle over MikroTik-apparaten vergroten en zal de apparaatprocessor niet onverwachts overbelasten. Als je echter problemen hebt met het opzetten van het script, schrijf dan gerust in de comments. Ik zal proberen te helpen.
Het script wordt gecontroleerd: hAP ac lite [RouterBOARD 952Ui-5ac2nD], RouterOS 6.47.8 (stable).