check-health: monitor free RAM
---- ✂️ ---- 🗃️📉️ Health warning: free RAM The available free RAM on MikroTik is at 18% (47MiB)! ---- ✂️ ---- 🗃️📈️ Health recovery: free RAM The available free RAM on MikroTik increased to 65% (168MiB). ---- ✂️ ----
22
check-health
|
@ -12,6 +12,7 @@
|
|||
|
||||
:global CheckHealthCPULoad;
|
||||
:global CheckHealthCPULoadNotified;
|
||||
:global CheckHealthFreeRAMNotified;
|
||||
:global CheckHealthLast;
|
||||
:global CheckHealthTemperature;
|
||||
:global CheckHealthTemperatureDeviation;
|
||||
|
@ -45,7 +46,9 @@
|
|||
|
||||
$ScriptLock $0;
|
||||
|
||||
:set CheckHealthCPULoad (($CheckHealthCPULoad * 4 + [ /system/resource/get cpu-load ] * 10) / 5);
|
||||
:local Resource [ /system/resource/get ];
|
||||
|
||||
:set CheckHealthCPULoad (($CheckHealthCPULoad * 4 + ($Resource->"cpu-load") * 10) / 5);
|
||||
:if ($CheckHealthCPULoad > 750 && $CheckHealthCPULoadNotified != true) do={
|
||||
$SendNotification2 ({ origin=$0; \
|
||||
subject=([ $SymbolForNotification "abacus,chart-increasing" ] . "Health warning: CPU load"); \
|
||||
|
@ -59,6 +62,23 @@ $ScriptLock $0;
|
|||
:set CheckHealthCPULoadNotified false;
|
||||
}
|
||||
|
||||
:local CheckHealthFreeRAM ($Resource->"free-memory" * 100 / $Resource->"total-memory");
|
||||
:if ($CheckHealthFreeRAM < 20 && $CheckHealthFreeRAMNotified != true) do={
|
||||
$SendNotification2 ({ origin=$0; \
|
||||
subject=([ $SymbolForNotification "card-file-box,chart-decreasing" ] . "Health warning: free RAM"); \
|
||||
message=("The available free RAM on " . $Identity . " is at " . $CheckHealthFreeRAM . "% (" . \
|
||||
($Resource->"free-memory" / 1024 / 1024) . "MiB)!") });
|
||||
:set CheckHealthFreeRAMNotified true;
|
||||
}
|
||||
:if ($CheckHealthFreeRAM > 30 && $CheckHealthFreeRAMNotified = true) do={
|
||||
$SendNotification2 ({ origin=$0; \
|
||||
subject=([ $SymbolForNotification "card-file-box,chart-increasing" ] . "Health recovery: free RAM"); \
|
||||
message=("The available free RAM on " . $Identity . " increased to " . $CheckHealthFreeRAM . "% (" . \
|
||||
($Resource->"free-memory" / 1024 / 1024) . "MiB).") });
|
||||
:set CheckHealthFreeRAMNotified false;
|
||||
}
|
||||
|
||||
|
||||
:foreach Voltage in=[ /system/health/find where type="V" ] do={
|
||||
:local Name [ /system/health/get $Voltage name ];
|
||||
:local Value [ /system/health/get $Voltage value ];
|
||||
|
|
BIN
doc/check-health.d/notification-03-free-ram-low.avif
Normal file
After Width: | Height: | Size: 6.3 KiB |
BIN
doc/check-health.d/notification-04-free-ram-ok.avif
Normal file
After Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 4 KiB After Width: | Height: | Size: 4 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
|
@ -13,14 +13,16 @@ This script is run from scheduler periodically, sending notification on
|
|||
health related events:
|
||||
|
||||
* high CPU load
|
||||
* low available free RAM
|
||||
* voltage jumps up or down more than configured threshold or drops below limit
|
||||
* power supply failed or recovered
|
||||
* temperature is above or below threshold
|
||||
|
||||
Note that bad initial state will not trigger an event.
|
||||
|
||||
Monitoring CPU load works on all devices. Other than that only sensors
|
||||
available in hardware can be checked. See what your hardware supports:
|
||||
Monitoring CPU load and available free RAM works on all devices. Other
|
||||
than that only sensors available in hardware can be checked. See what your
|
||||
hardware supports:
|
||||
|
||||
/system/health/print;
|
||||
|
||||
|
@ -31,19 +33,24 @@ available in hardware can be checked. See what your hardware supports:
|
|||

|
||||

|
||||
|
||||
#### Available free RAM
|
||||
|
||||

|
||||

|
||||
|
||||
#### Voltage
|
||||
|
||||

|
||||

|
||||
|
||||
#### Temperature
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
#### PSU state
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
Requirements and installation
|
||||
-----------------------------
|
||||
|
|
|
@ -1078,6 +1078,7 @@
|
|||
"abacus"="\F0\9F\A7\AE";
|
||||
"alarm-clock"="\E2\8F\B0";
|
||||
"calendar"="\F0\9F\93\85";
|
||||
"card-file-box"="\F0\9F\97\83";
|
||||
"chart-decreasing"="\F0\9F\93\89";
|
||||
"chart-increasing"="\F0\9F\93\88";
|
||||
"cloud"="\E2\98\81";
|
||||
|
|