MikroTik Script: Notification de surcharge du processeur de périphérique

Le script mesure le niveau d’utilisation du processeur du périphérique MikroTik, après un certain laps de temps. Calcule la charge moyenne du processeur. Envoie une notification par e-mail ou Telegram lorsque le seuil de charge CPU est dépassé, ainsi que la dynamique de la charge CPU.

En outre, le script peut être utilisé pour surveiller la charge du processeur et écrire les résultats dans le journal du périphérique MikroTik. Vous pouvez ajouter la possibilité d’enregistrer des données dans un fichier.

Message électronique concernant la surcharge du processeur
Exemple d’e-mail de notification de surcharge du processeur

Contenu

  1. Description du script
  2. Créer un script
  3. Ajouter un script au planificateur

Article dans d’autres langues:
?? – MikroTik Script: Device processor overload notification
?? – MikroTik Script: Notificación de sobrecarga del procesador del dispositivo
?? – MikroTik Скрипт: Уведомление о перегрузке процессора устройства
?? – MikroTik Script: Benachrichtigung über Überlastung des Gerätes Prozessors
?? – MikroTik-script: Melding over overbelasting van apparaat processor

Description du script

Spécifiez le seuil excédentaire (pourcentage de charge du processeur) – DeviceAverageLoadThreshold et le nombre de mesures – NumberOfMeasurements. Intervalle de mesure 2 secondes. Si la valeur seuil est dépassée, le message indiquera les résultats de mesure pour évaluer la dynamique de la charge.

Ne définissez pas le DeviceAverageLoadThreshold trop élevé – il s’agit d’une valeur moyenne, commencez à 40% et si le périphérique ne causera pas de problèmes pendant ce chargement, augmentez progressivement le seuil du script.

Si une instance de script déjà en cours d’exécution est détectée lors de l’exécution du script « MikroTik processor load check », le script ne sera pas exécuté deux fois et un avertissement sera affiché dans le journal de l’appareil.

Chaque fois que le script est exécuté, même si le seuil AverageCPULoad n’est pas dépassé, une ligne comme celle-ci est écrite dans le journal de l’appareil:

Average CPU load = 6%

Ceci est utile pour les tests, mais vous pouvez commenter ou supprimer cette ligne:

#:log info "Average CPU load = $AverageCPULoad%";

Le script envoie une notification à l’e-mail et au message Telegram en utilisant les fonctions:

Le message contient:

  1. Charge moyenne du processeur (mesures effectuées);
  2. Modèle de processeur de périphérique;
  3. Seuil de réponse du script (charge du processeur);
  4. Nombre de mesures;
  5. Charge CPU pour chaque mesure.
Message Telegram concernant la surcharge du processeur
Exemple de message Telegram avec notification de surcharge CPU

Si vous n’avez besoin d’aucun des types de notifications, supprimez la section d’appel du texte du script.

Créer un script

Pour exécuter le script, vous avez besoin des autorisations: read, write, test, policy.

[System] -> [Scripts] -> [+] -> [Name: CPUOverloadCheck] -> [Policy: read, write, test, policy]

Code de script:

: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
}
MikroTik Script: Notification de surcharge du processeur de périphérique

Ajouter un script au planificateur

Pour exécuter le script, vous avez besoin des autorisations: read, write, test, policy.

Dans le script de tâche, dans la variable ScriptName, spécifier le nom du script, dans l’exemple CPUOverloadCheck. Ceci est nécessaire pour vérifier un script déjà en cours d’exécution.

Dans les cas normaux, l’intervalle de vérification est de 5 minutes, mais vous pouvez réduire l’intervalle de vérification pour mieux diagnostiquer l’appareil.

Créer une tâche:

[System] -> [Schedule] -> [+] -> [Name: CPUOverloadCheck] —>  [Interval: 00:05:00] -> [Policy: read, write, policy, test]

Code de script:

: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;
}
Ajouter une notification sur la surcharge du processeur de l'appareil au planificateur

? Conseil: Si vous utilisez beaucoup de scripts, pour réduire la charge simultanée, ajoutez un décalage au paramètre Start Time (voir capture d’écran).


? Comment créer un script – vérifier la charge du processeur d’un appareil MikroTik et envoyer une notification par e-mail ou un message Telegram a été abordé dans cet article. Vous pouvez désormais augmenter le contrôle des appareils MikroTik et la surcharge du processeur de l’appareil ne se produira pas de manière inattendue. Cependant, si vous rencontrez des problèmes lors de la configuration du script, n’hésitez pas à écrire dans les commentaires. J’essaierai d’aider.

Le script est vérifié: hAP ac lite [RouterBOARD 952Ui-5ac2nD], RouterOS 6.47.8 (stable).

Laisser un commentaire