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);