From 898a9a997e5cf1ea89d6658e67c57705422c7ac4 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Wed, 11 Jun 2014 15:27:54 +0200 Subject: 1) Improve Taskmanager error handling 2) add uptime display to status page, finally closes #953 --- inc/taskmanager.inc.php | 21 +++++---------------- modules/systemstatus.inc.php | 11 +++++++++++ templates/systemstatus/systeminfo.html | 6 +++++- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/inc/taskmanager.inc.php b/inc/taskmanager.inc.php index b61714ec..1bbdb7a5 100644 --- a/inc/taskmanager.inc.php +++ b/inc/taskmanager.inc.php @@ -30,26 +30,15 @@ class Taskmanager $message = "$seq, $task, $data"; $sent = socket_send(self::$sock, $message, strlen($message), 0); if ($sent != strlen($message)) { - Message::addError('taskmanager-error'); + self::addErrorMessage(false); return false; } if ($async) return true; $reply = self::readReply($seq); - if ($reply === false) { - Message::addError('taskmanager-error'); - return false; - } - if (!is_array($reply)) { - Message::addError('taskmanager-format'); - return false; - } - if (isset($reply['statusCode']) && $reply['statusCode'] === NO_SUCH_TASK) { - Message::addError('task-error', 'Ungültiger Task: ' . $task); - return false; - } - if (!isset($reply['id'])) { - Message::addError('taskmanager-format'); + if ($reply === false || !is_array($reply) || !isset($reply['id']) + || (isset($reply['statusCode']) && $reply['statusCode'] === NO_SUCH_TASK)) { + self::addErrorMessage(false); return false; } return $reply; @@ -102,7 +91,7 @@ class Taskmanager return true; return false; } - + public static function addErrorMessage($task) { static $failure = false; diff --git a/modules/systemstatus.inc.php b/modules/systemstatus.inc.php index a83a8919..67ff4415 100644 --- a/modules/systemstatus.inc.php +++ b/modules/systemstatus.inc.php @@ -50,6 +50,8 @@ class Page_SystemStatus extends Page protected function ajaxDiskStat() { $task = Taskmanager::submit('DiskStat'); + if ($task === false) + return; $task = Taskmanager::waitComplete($task, 3000); if (!isset($task['data']['list']) || empty($task['data']['list'])) { @@ -106,6 +108,8 @@ class Page_SystemStatus extends Page protected function ajaxAddressList() { $task = Taskmanager::submit('LocalAddressesList'); + if ($task === false) + return; $task = Taskmanager::waitComplete($task, 3000); if (!isset($task['data']['addresses']) || empty($task['data']['addresses'])) { @@ -132,6 +136,7 @@ class Page_SystemStatus extends Page $cpuInfo = file_get_contents('/proc/cpuinfo'); $memInfo = file_get_contents('/proc/meminfo'); $stat = file_get_contents('/proc/stat'); + $uptime = file_get_contents('/proc/uptime'); $cpuCount = preg_match_all('/\bprocessor\s/', $cpuInfo, $out); //$cpuCount = count($out); $data = array( @@ -140,7 +145,11 @@ class Page_SystemStatus extends Page 'memFree' => '???', 'swapTotal' => '???', 'swapUsed' => '???', + 'uptime' => '???' ); + if (preg_match('/^(\d+)\D/', $uptime, $out)) { + $data['uptime'] = floor($out[1] / 86400) . ' Tag(e), ' . floor(($out[1] % 86400) / 3600) . ' Stunde(n)'; // TODO: i18n + } if (preg_match('/\bMemTotal:\s+(\d+)\s.*\bMemFree:\s+(\d+)\s.*\bBuffers:\s+(\d+)\s.*\bCached:\s+(\d+)\s.*\bSwapTotal:\s+(\d+)\s.*\bSwapFree:\s+(\d+)\s/s', $memInfo, $out)) { $data['memTotal'] = Util::readableFileSize($out[1] * 1024); $data['memFree'] = Util::readableFileSize(($out[2] + $out[3] + $out[4]) * 1024); @@ -164,6 +173,8 @@ class Page_SystemStatus extends Page $data = array(); $taskId = Trigger::ldadp(); + if ($taskId === false) + return; $status = Taskmanager::waitComplete($taskId, 10000); if (Taskmanager::isFailed($status)) { diff --git a/templates/systemstatus/systeminfo.html b/templates/systemstatus/systeminfo.html index 6b7d090d..78cdd43e 100644 --- a/templates/systemstatus/systeminfo.html +++ b/templates/systemstatus/systeminfo.html @@ -1,3 +1,7 @@ +
+ OS Uptime: {{uptime}} +
+
CPU-Last {{#cpuLoadOk}} @@ -40,7 +44,7 @@ {{#swapWarning}}
Achtung! Es wird swap-Speicher genutzt. Dies kann ein Hinweis darauf sein, dass dem Satelliten-Server zu wenig physikalischer Speicher zur Verfügung steht. Im Falle von - Performance-Problemen oder Instabilität des Server sollten Sie erwägen, den Server mit mehr RAM auszustatten. + Performance-Problemen oder Instabilität des Servers sollten Sie erwägen, den Server mit mehr RAM auszustatten.
{{/swapWarning}} -- cgit v1.2.3-55-g7522