diff options
author | Christian Hesse <mail@eworm.de> | 2023-01-20 14:34:18 +0100 |
---|---|---|
committer | Christian Hesse <mail@eworm.de> | 2023-01-20 23:20:53 +0100 |
commit | 6780e1a24ccdefd3a328abe7ca8cef3d4ed57114 (patch) | |
tree | ea8aa37c8e586143f2e832ed42e8bf163d7348e1 | |
parent | 75bd14267e7a5507e0d58b9945dbb24e5d831af8 (diff) |
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).
---- ✂️ ----
-rw-r--r-- | check-health | 22 | ||||
-rw-r--r-- | doc/check-health.d/notification-03-free-ram-low.avif | bin | 0 -> 6426 bytes | |||
-rw-r--r-- | doc/check-health.d/notification-04-free-ram-ok.avif | bin | 0 -> 6716 bytes | |||
-rw-r--r-- | doc/check-health.d/notification-05-voltage.avif (renamed from doc/check-health.d/notification-03-voltage.avif) | bin | 4053 -> 4053 bytes | |||
-rw-r--r-- | doc/check-health.d/notification-06-temperature-high.avif (renamed from doc/check-health.d/notification-04-temperature-high.avif) | bin | 3615 -> 3615 bytes | |||
-rw-r--r-- | doc/check-health.d/notification-07-temperature-ok.avif (renamed from doc/check-health.d/notification-05-temperature-ok.avif) | bin | 3763 -> 3763 bytes | |||
-rw-r--r-- | doc/check-health.d/notification-08-psu-fail.avif (renamed from doc/check-health.d/notification-06-psu-fail.avif) | bin | 3544 -> 3544 bytes | |||
-rw-r--r-- | doc/check-health.d/notification-09-psu-ok.avif (renamed from doc/check-health.d/notification-07-psu-ok.avif) | bin | 3561 -> 3561 bytes | |||
-rw-r--r-- | doc/check-health.md | 21 | ||||
-rw-r--r-- | global-functions | 1 |
10 files changed, 36 insertions, 8 deletions
diff --git a/check-health b/check-health index 3957ad1..55ad8ab 100644 --- a/check-health +++ b/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 ]; diff --git a/doc/check-health.d/notification-03-free-ram-low.avif b/doc/check-health.d/notification-03-free-ram-low.avif Binary files differnew file mode 100644 index 0000000..6f45fcf --- /dev/null +++ b/doc/check-health.d/notification-03-free-ram-low.avif diff --git a/doc/check-health.d/notification-04-free-ram-ok.avif b/doc/check-health.d/notification-04-free-ram-ok.avif Binary files differnew file mode 100644 index 0000000..0b76bac --- /dev/null +++ b/doc/check-health.d/notification-04-free-ram-ok.avif diff --git a/doc/check-health.d/notification-03-voltage.avif b/doc/check-health.d/notification-05-voltage.avif Binary files differindex f4d6005..f4d6005 100644 --- a/doc/check-health.d/notification-03-voltage.avif +++ b/doc/check-health.d/notification-05-voltage.avif diff --git a/doc/check-health.d/notification-04-temperature-high.avif b/doc/check-health.d/notification-06-temperature-high.avif Binary files differindex 1a93610..1a93610 100644 --- a/doc/check-health.d/notification-04-temperature-high.avif +++ b/doc/check-health.d/notification-06-temperature-high.avif diff --git a/doc/check-health.d/notification-05-temperature-ok.avif b/doc/check-health.d/notification-07-temperature-ok.avif Binary files differindex 3bb9c68..3bb9c68 100644 --- a/doc/check-health.d/notification-05-temperature-ok.avif +++ b/doc/check-health.d/notification-07-temperature-ok.avif diff --git a/doc/check-health.d/notification-06-psu-fail.avif b/doc/check-health.d/notification-08-psu-fail.avif Binary files differindex a4e52a9..a4e52a9 100644 --- a/doc/check-health.d/notification-06-psu-fail.avif +++ b/doc/check-health.d/notification-08-psu-fail.avif diff --git a/doc/check-health.d/notification-07-psu-ok.avif b/doc/check-health.d/notification-09-psu-ok.avif Binary files differindex bcc5a39..bcc5a39 100644 --- a/doc/check-health.d/notification-07-psu-ok.avif +++ b/doc/check-health.d/notification-09-psu-ok.avif diff --git a/doc/check-health.md b/doc/check-health.md index b498998..3b0c4ae 100644 --- a/doc/check-health.md +++ b/doc/check-health.md @@ -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: ![check-health notification cpu load high](check-health.d/notification-01-cpu-load-high.avif) ![check-health notification cpu load ok](check-health.d/notification-02-cpu-load-ok.avif) +#### Available free RAM + +![check-health notification free ram low](check-health.d/notification-03-free-ram-low.avif) +![check-health notification free ram ok](check-health.d/notification-04-free-ram-ok.avif) + #### Voltage -![check-health notification voltage](check-health.d/notification-03-voltage.avif) +![check-health notification voltage](check-health.d/notification-05-voltage.avif) #### Temperature -![check-health notification temperature high](check-health.d/notification-04-temperature-high.avif) -![check-health notification temperature ok](check-health.d/notification-05-temperature-ok.avif) +![check-health notification temperature high](check-health.d/notification-06-temperature-high.avif) +![check-health notification temperature ok](check-health.d/notification-07-temperature-ok.avif) #### PSU state -![check-health notification psu fail](check-health.d/notification-06-psu-fail.avif) -![check-health notification psu ok](check-health.d/notification-07-psu-ok.avif) +![check-health notification psu fail](check-health.d/notification-08-psu-fail.avif) +![check-health notification psu ok](check-health.d/notification-09-psu-ok.avif) Requirements and installation ----------------------------- diff --git a/global-functions b/global-functions index 0e94dea..1ed5248 100644 --- a/global-functions +++ b/global-functions @@ -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"; |