El script mide el nivel de utilización del procesador del dispositivo MikroTik, después de un cierto período de tiempo. Calcula la carga promedio del procesador. Envía una notificación por correo electrónico o mensaje de Telegram cuando se supera el umbral de carga de la CPU, así como la dinámica de la carga de la CPU.
Además, el script se puede usar para monitorear la carga de la CPU y escribir los resultados en el registro del dispositivo MikroTik. Puede agregar la capacidad de guardar datos en un archivo.
Contenido
Artículo en otros idiomas:
?? – MikroTik Script: Device processor overload notification
?? – MikroTik Скрипт: Уведомление о перегрузке процессора устройства
?? – MikroTik Script: Notification de surcharge du processeur de périphérique
?? – MikroTik Script: Benachrichtigung über Überlastung des Gerätes Prozessors
?? – MikroTik-script: Melding over overbelasting van apparaat processor
Descripción del guión
Especifique el umbral de exceso (porcentaje de carga de CPU) – DeviceAverageLoadThreshold y el número de mediciones – NumberOfMeasurements. Intervalo de medición 2 segundos. Si se supera el valor umbral, el mensaje indicará los resultados de la medición para evaluar la dinámica de la carga.
No establezca el DeviceAverageLoadThreshold demasiado alto: este es un valor promedio, comience en el 40% y si el dispositivo no causará problemas durante esta carga, aumente gradualmente el umbral del script.
Si se encuentra una instancia de secuencia de comandos que ya se está ejecutando cuando se ejecuta la secuencia de comandos «Comprobación de carga del procesador MikroTik», la secuencia de comandos no se ejecutará dos veces y se mostrará una advertencia en el registro del dispositivo.
Cada vez que se ejecuta el script, incluso si no se excede el umbral AverageCPULoad, se escribe una línea como esta en el registro del dispositivo:
Average CPU load = 6%
Esto es útil para realizar pruebas, pero puede comentar o eliminar esta línea:
#:log info "Average CPU load = $AverageCPULoad%";
The script sends a notification to email and Telegram message using the functions:
El mensaje contiene:
- Carga promedio del procesador (mediciones realizadas);
- Modelo de procesador de dispositivo;
- Umbral de respuesta del script (carga de la CPU);
- Número de medidas;
- Carga de CPU para cada medición.
Si no necesita ninguno de los tipos de notificación, elimine la sección enviar mensaje del texto del script.
Crear guion
Para ejecutar el script, necesita permiso: read, write, test, policy.
[System] -> [Scripts] -> [+] -> [Name: CPUOverloadCheck] -> [Policy: read, write, test, policy]
Código de secuencia de comandos:
: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
}
Agregar secuencia de comandos al programador
Para ejecutar el script, necesita permiso: read, write, test, policy.
En el script, en la variable ScriptName, especifique el nombre del script, en el ejemplo CPUOverloadCheck. Esto es necesario para verificar un script que ya se esté ejecutando.
Para casos normales, el intervalo de verificación es de 5 minutos, pero puede reducir el intervalo de verificación para diagnosticar mejor el dispositivo.
Crear tarea:
[System] -> [Schedule] -> [+] -> [Name: CPUOverloadCheck] —> [Interval: 00:05:00] -> [Policy: read, write, policy, test]
Código de secuencia de comandos:
: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;
}
? Consejo: si está utilizando muchos scripts, para reducir la carga simultánea, agregue un desplazamiento al parámetro Start Time (ver captura de pantalla).
? Cómo crear un script: en este artículo se ha discutido cómo verificar la carga del procesador de un dispositivo MikroTik y enviar una notificación por correo electrónico o un mensaje de Telegram. Ahora puede aumentar el control sobre los dispositivos MikroTik y la sobrecarga de la CPU del dispositivo no ocurrirá inesperadamente. Sin embargo, si tiene algún problema al configurar el script, no dude en escribir en los comentarios. Trataré de ayudar.
El guión está verificado: hAP ac lite [RouterBOARD 952Ui-5ac2nD], RouterOS 6.47.8 (stable).