From 6780e1a24ccdefd3a328abe7ca8cef3d4ed57114 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Fri, 20 Jan 2023 14:34:18 +0100 Subject: [PATCH] check-health: monitor free RAM MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ---- ✂️ ---- 🗃️📉️ 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). ---- ✂️ ---- --- check-health | 22 +++++++++++++++++- .../notification-03-free-ram-low.avif | Bin 0 -> 6426 bytes .../notification-04-free-ram-ok.avif | Bin 0 -> 6716 bytes ...tage.avif => notification-05-voltage.avif} | Bin ... => notification-06-temperature-high.avif} | Bin ...if => notification-07-temperature-ok.avif} | Bin ...ail.avif => notification-08-psu-fail.avif} | Bin ...su-ok.avif => notification-09-psu-ok.avif} | Bin doc/check-health.md | 21 +++++++++++------ global-functions | 1 + 10 files changed, 36 insertions(+), 8 deletions(-) create mode 100644 doc/check-health.d/notification-03-free-ram-low.avif create mode 100644 doc/check-health.d/notification-04-free-ram-ok.avif rename doc/check-health.d/{notification-03-voltage.avif => notification-05-voltage.avif} (100%) rename doc/check-health.d/{notification-04-temperature-high.avif => notification-06-temperature-high.avif} (100%) rename doc/check-health.d/{notification-05-temperature-ok.avif => notification-07-temperature-ok.avif} (100%) rename doc/check-health.d/{notification-06-psu-fail.avif => notification-08-psu-fail.avif} (100%) rename doc/check-health.d/{notification-07-psu-ok.avif => notification-09-psu-ok.avif} (100%) 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 new file mode 100644 index 0000000000000000000000000000000000000000..6f45fcf22a310e721bd245da45db20aa82c73324 GIT binary patch literal 6426 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 literal 0 HcmV?d00001 diff --git a/doc/check-health.d/notification-03-voltage.avif b/doc/check-health.d/notification-05-voltage.avif similarity index 100% rename from doc/check-health.d/notification-03-voltage.avif rename to 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 similarity index 100% rename from doc/check-health.d/notification-04-temperature-high.avif rename to 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 similarity index 100% rename from doc/check-health.d/notification-05-temperature-ok.avif rename to 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 similarity index 100% rename from doc/check-health.d/notification-06-psu-fail.avif rename to 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 similarity index 100% rename from doc/check-health.d/notification-07-psu-ok.avif rename to 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";