From c48509683c556aacde6b4fcbbdd53f2c77d38077 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 14 Feb 2023 20:09:41 +0100 Subject: [PATCH] check-health: wording: load -> utilization MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The load is defined as something different... https://en.wikipedia.org/wiki/Load_(computing) So let's update the wording and use 'utilization' instead. ---- ✂️ ---- 🧮️📈️ Health warning: CPU utilization The average CPU utilization on MikroTik is at 76%! ---- ✂️ ---- 🧮️📉️ Health recovery: CPU utilization The average CPU utilization on MikroTik decreased to 64%. ---- ✂️ ---- --- check-health | 22 +++++++++--------- .../notification-01-cpu-load-high.avif | Bin 6066 -> 0 bytes .../notification-01-cpu-utilization-high.avif | Bin 0 -> 6453 bytes .../notification-02-cpu-load-ok.avif | Bin 6378 -> 0 bytes .../notification-02-cpu-utilization-ok.avif | Bin 0 -> 6717 bytes doc/check-health.md | 14 +++++------ global-config.changes | 2 +- 7 files changed, 19 insertions(+), 19 deletions(-) delete mode 100644 doc/check-health.d/notification-01-cpu-load-high.avif create mode 100644 doc/check-health.d/notification-01-cpu-utilization-high.avif delete mode 100644 doc/check-health.d/notification-02-cpu-load-ok.avif create mode 100644 doc/check-health.d/notification-02-cpu-utilization-ok.avif diff --git a/check-health b/check-health index a9a9dbf..e208bac 100644 --- a/check-health +++ b/check-health @@ -10,8 +10,8 @@ :global GlobalFunctionsReady; :while ($GlobalFunctionsReady != true) do={ :delay 500ms; } -:global CheckHealthCPULoad; -:global CheckHealthCPULoadNotified; +:global CheckHealthCPUUtilization; +:global CheckHealthCPUUtilizationNotified; :global CheckHealthFreeRAMNotified; :global CheckHealthLast; :global CheckHealthTemperature; @@ -37,18 +37,18 @@ $ScriptLock $0; :local Resource [ /system/resource/get ]; -:set CheckHealthCPULoad (($CheckHealthCPULoad * 4 + ($Resource->"cpu-load") * 10) / 5); -:if ($CheckHealthCPULoad > 750 && $CheckHealthCPULoadNotified != true) do={ +:set CheckHealthCPUUtilization (($CheckHealthCPUUtilization * 4 + ($Resource->"cpu-load") * 10) / 5); +:if ($CheckHealthCPUUtilization > 750 && $CheckHealthCPUUtilizationNotified != true) do={ $SendNotification2 ({ origin=$0; \ - subject=([ $SymbolForNotification "abacus,chart-increasing" ] . "Health warning: CPU load"); \ - message=("The average CPU load on " . $Identity . " is at " . ($CheckHealthCPULoad / 10) . "%!") }); - :set CheckHealthCPULoadNotified true; + subject=([ $SymbolForNotification "abacus,chart-increasing" ] . "Health warning: CPU utilization"); \ + message=("The average CPU utilization on " . $Identity . " is at " . ($CheckHealthCPUUtilization / 10) . "%!") }); + :set CheckHealthCPUUtilizationNotified true; } -:if ($CheckHealthCPULoad < 650 && $CheckHealthCPULoadNotified = true) do={ +:if ($CheckHealthCPUUtilization < 650 && $CheckHealthCPUUtilizationNotified = true) do={ $SendNotification2 ({ origin=$0; \ - subject=([ $SymbolForNotification "abacus,chart-decreasing" ] . "Health recovery: CPU load"); \ - message=("The average CPU load on " . $Identity . " decreased to " . ($CheckHealthCPULoad / 10) . "%.") }); - :set CheckHealthCPULoadNotified false; + subject=([ $SymbolForNotification "abacus,chart-decreasing" ] . "Health recovery: CPU utilization"); \ + message=("The average CPU utilization on " . $Identity . " decreased to " . ($CheckHealthCPUUtilization / 10) . "%.") }); + :set CheckHealthCPUUtilizationNotified false; } :local CheckHealthFreeRAM ($Resource->"free-memory" * 100 / $Resource->"total-memory"); diff --git a/doc/check-health.d/notification-01-cpu-load-high.avif b/doc/check-health.d/notification-01-cpu-load-high.avif deleted file mode 100644 index 3c1a4685af3340f8bb446b4efd39b718f9198d19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6066 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 diff --git a/doc/check-health.d/notification-01-cpu-utilization-high.avif b/doc/check-health.d/notification-01-cpu-utilization-high.avif new file mode 100644 index 0000000000000000000000000000000000000000..8aad87832594b52984424d63ad9eb6a423303f4f GIT binary patch literal 6453 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 WX^Y8_YCi?K==#dQvkrNFqW=I*mzJpj literal 0 HcmV?d00001 diff --git a/doc/check-health.d/notification-02-cpu-load-ok.avif b/doc/check-health.d/notification-02-cpu-load-ok.avif deleted file mode 100644 index 4f12b700e27c3bfa533d6b1c38a8f00dd8be7899..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6378 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