From cbd97eaccbb8d287daacce8f47af07fb3c60dcc0 Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Mon, 5 Aug 2024 16:05:16 +0200 Subject: [PATCH] system: add load average back to system info widget The API call is not fitting too well, but since it fetches a sysctl this is the right spot to do it. --- .../OPNsense/Diagnostics/Api/SystemController.php | 9 ++++++++- src/opnsense/www/js/widgets/Metadata/Core.xml | 1 + src/opnsense/www/js/widgets/SystemInformation.js | 4 +++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/Api/SystemController.php b/src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/Api/SystemController.php index c9f097816..407ce9a0d 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/Api/SystemController.php +++ b/src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/Api/SystemController.php @@ -131,15 +131,22 @@ class SystemController extends ApiControllerBase public function systemTimeAction() { $config = Config::getInstance()->object(); - $boottime = json_decode((new Backend())->configdRun('system sysctl values kern.boottime'), true); + $boottime = json_decode((new Backend())->configdRun('system sysctl values kern.boottime,vm.loadavg'), true); preg_match("/sec = (\d+)/", $boottime['kern.boottime'], $matches); $last_change = date("D M j G:i:s T Y", !empty($config->revision->time) ? intval($config->revision->time) : 0); + $loadavg = explode(' ', $boottime['vm.loadavg']); + if (count($loadavg) == 5 && $loadavg[0] == '{' && $loadavg[4] == '}') { + $loadavg = join(', ', [$loadavg[1], $loadavg[2], $loadavg[3]]); + } else { + $loadavg = gettext('N/A'); + } $response = [ 'uptime' => $this->formatUptime(time() - $matches[1]), 'datetime' => date("D M j G:i:s T Y"), 'config' => $last_change, + 'loadavg' => $loadavg, ]; return $response; diff --git a/src/opnsense/www/js/widgets/Metadata/Core.xml b/src/opnsense/www/js/widgets/Metadata/Core.xml index fc52c989d..4871e9ca2 100644 --- a/src/opnsense/www/js/widgets/Metadata/Core.xml +++ b/src/opnsense/www/js/widgets/Metadata/Core.xml @@ -20,6 +20,7 @@ Versions Updates Current date/time + Load average Uptime Last configuration change diff --git a/src/opnsense/www/js/widgets/SystemInformation.js b/src/opnsense/www/js/widgets/SystemInformation.js index d67454f78..d8912cb6c 100644 --- a/src/opnsense/www/js/widgets/SystemInformation.js +++ b/src/opnsense/www/js/widgets/SystemInformation.js @@ -42,8 +42,9 @@ export default class SystemInformation extends BaseTableWidget { async onWidgetTick() { const data = await this.ajaxCall('/api/diagnostics/system/systemTime'); - $('#datetime').text(data['datetime']); $('#uptime').text(data['uptime']); + $('#loadavg').text(data['loadavg']); + $('#datetime').text(data['datetime']); $('#config').text(data['config']); } @@ -64,6 +65,7 @@ export default class SystemInformation extends BaseTableWidget { } rows.push([[this.translations['uptime']], $('').prop('outerHTML')]); + rows.push([[this.translations['loadavg']], $('').prop('outerHTML')]); rows.push([[this.translations['datetime']], $('').prop('outerHTML')]); rows.push([[this.translations['config']], $('').prop('outerHTML')]); super.updateTable('sysinfo-table', rows);