Das Skript misst nach einer bestimmten Zeit den Prozessorauslastungsgrad des MikroTik-Geräts. Berechnet die durchschnittliche Prozessorlast. Sendet eine Benachrichtigung per E-Mail oder Telegramm, wenn der Schwellenwert für die CPU-Auslastung überschritten wird, sowie die Dynamik der CPU-Auslastung.
Das Skript kann auch verwendet werden, um die CPU-Auslastung zu überwachen und die Ergebnisse in das MikroTik-Geräteprotokoll zu schreiben. Sie können die Möglichkeit hinzufügen, Daten in einer Datei zu speichern.
Inhalt
Artikel in anderen Sprachen:
?? – 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: Melding over overbelasting van apparaat processor
Beschreibung des Skripts
Geben Sie den überschüssigen Schwellenwert (Prozentsatz der CPU-Auslastung) – DeviceAverageLoadThreshold und die Anzahl der Messungen – NumberOfMeasurements an. Messintervall 2 Sekunden. Wenn der Schwellenwert überschritten wird, zeigt die Meldung die Messergebnisse an, um die Dynamik der Last zu bewerten.
Setzen Sie DeviceAverageLoadThreshold nicht zu hoch – dies ist ein Durchschnittswert. Beginnen Sie bei 40%. Wenn das Gerät keine Startprobleme verursacht, erhöhen Sie schrittweise den Schwellenwert für das Skript.
Wenn beim Ausführen des Skripts „MikroTik Processor Load Check“ eine bereits ausgeführte Skriptinstanz gefunden wird, wird das Skript nicht zweimal ausgeführt, und im Geräteprotokoll wird eine Warnung angezeigt.
Jedes Mal, wenn das Skript ausgeführt wird, wird eine Zeile wie diese in das Geräteprotokoll geschrieben, auch wenn der Schwellenwert AverageCPULoad nicht überschritten wird:
Average CPU load = 6%
Dies ist nützlich zum Testen, aber Sie können diese Zeile auskommentieren oder entfernen:
#:log info "Average CPU load = $AverageCPULoad%";
Um Benachrichtigungen an EMail- und Telegram Nachrichten zu senden, verwendet das Skript die folgenden Funktionen:
Die Nachricht enthält:
- Durchschnittliche Prozessorlast;
- Geräte-CPU-Modell;
- Skriptantwortschwelle (CPU-Auslastung);
- Die Anzahl der durchgeführten Messungen;
- CPU-Auslastung für jede Messung.
Wenn Sie keine der Benachrichtigungstypen benötigen, entfernen Sie den Aufruf Ausschnitt aus dem Skripttext.
Skript erstellen
Zum Ausführen des Skripts benötigen Sie die folgenden Rechte: read, write, test, policy.
[System] -> [Scripts] -> [+] -> [Name: CPUOverloadCheck] -> [Policy: read, write, test, policy]
Skriptcode:
: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
}
Skript zum Scheduler hinzufügen
Zum Ausführen des Skripts benötigen Sie die folgenden Rechte: read, write, test, policy.
Geben Sie im Aufgabenskript in der Variablen ScriptName den Namen des Skripts im Beispiel CPUOverloadCheck an. Dies ist erforderlich, um ein bereits ausgeführtes Skript zu überprüfen.
In normalen Fällen beträgt das Prüfintervall 5 Minuten. Sie können das Prüfintervall jedoch verkürzen, um das Gerät besser diagnostizieren zu können.
Aufgabe erstellen:
[System] -> [Schedule] -> [+] -> [Name: CPUOverloadCheck] —> [Interval: 00:05:00] -> [Policy: read, write, policy, test]
Skriptcode:
: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;
}
? Advice: If you are using a lot of scripts, to reduce the simultaneous load, add an offset to the Start Time parameter (see screenshot).
? In diesem Artikel wurde erläutert, wie Sie ein Skript erstellen, um die CPU-Auslastung auf dem MikroTik-Gerät zu überprüfen und E-Mail-Benachrichtigungen oder Telegram nachrichten zu senden. Jetzt können Sie die Steuerung des MikroTik-Geräts verbessern, und die Prozessorüberlastung des Geräts tritt nicht unerwartet auf. Wenn Sie jedoch Probleme beim Konfigurieren des Skripts haben, können Sie diese in den Kommentaren veröffentlichen. Ich werde versuchen zu helfen.
Das Skript wird überprüft: hAP ac lite [RouterBOARD 952Ui-5ac2nD], RouterOS 6.47.8 (stable).