aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--check-health22
-rw-r--r--doc/check-health.d/notification-03-free-ram-low.avifbin0 -> 6426 bytes
-rw-r--r--doc/check-health.d/notification-04-free-ram-ok.avifbin0 -> 6716 bytes
-rw-r--r--doc/check-health.d/notification-05-voltage.avif (renamed from doc/check-health.d/notification-03-voltage.avif)bin4053 -> 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)bin3615 -> 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)bin3763 -> 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)bin3544 -> 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)bin3561 -> 3561 bytes
-rw-r--r--doc/check-health.md21
-rw-r--r--global-functions1
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
new file mode 100644
index 0000000..6f45fcf
--- /dev/null
+++ b/doc/check-health.d/notification-03-free-ram-low.avif
Binary files differ
diff --git a/doc/check-health.d/notification-04-free-ram-ok.avif b/doc/check-health.d/notification-04-free-ram-ok.avif
new file mode 100644
index 0000000..0b76bac
--- /dev/null
+++ b/doc/check-health.d/notification-04-free-ram-ok.avif
Binary files differ
diff --git a/doc/check-health.d/notification-03-voltage.avif b/doc/check-health.d/notification-05-voltage.avif
index f4d6005..f4d6005 100644
--- a/doc/check-health.d/notification-03-voltage.avif
+++ b/doc/check-health.d/notification-05-voltage.avif
Binary files differ
diff --git a/doc/check-health.d/notification-04-temperature-high.avif b/doc/check-health.d/notification-06-temperature-high.avif
index 1a93610..1a93610 100644
--- a/doc/check-health.d/notification-04-temperature-high.avif
+++ b/doc/check-health.d/notification-06-temperature-high.avif
Binary files differ
diff --git a/doc/check-health.d/notification-05-temperature-ok.avif b/doc/check-health.d/notification-07-temperature-ok.avif
index 3bb9c68..3bb9c68 100644
--- a/doc/check-health.d/notification-05-temperature-ok.avif
+++ b/doc/check-health.d/notification-07-temperature-ok.avif
Binary files differ
diff --git a/doc/check-health.d/notification-06-psu-fail.avif b/doc/check-health.d/notification-08-psu-fail.avif
index a4e52a9..a4e52a9 100644
--- a/doc/check-health.d/notification-06-psu-fail.avif
+++ b/doc/check-health.d/notification-08-psu-fail.avif
Binary files differ
diff --git a/doc/check-health.d/notification-07-psu-ok.avif b/doc/check-health.d/notification-09-psu-ok.avif
index bcc5a39..bcc5a39 100644
--- a/doc/check-health.d/notification-07-psu-ok.avif
+++ b/doc/check-health.d/notification-09-psu-ok.avif
Binary files differ
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";