From 3ca22264948f6e0eb4d3a0811564f9bc80e98ad3 Mon Sep 17 00:00:00 2001 From: Xargana Date: Tue, 8 Apr 2025 17:20:17 +0300 Subject: [PATCH] fixed uptime calculation --- api/status/status.js | 79 +++++++++++++++++++++++--------------------- 1 file changed, 41 insertions(+), 38 deletions(-) diff --git a/api/status/status.js b/api/status/status.js index 44245ed..0f1b01e 100644 --- a/api/status/status.js +++ b/api/status/status.js @@ -47,44 +47,47 @@ async function checkServers() { } async function checkPM2Services() { - return new Promise((resolve, reject) => { - pm2.connect(function(err) { - if (err) { - console.error('Error connecting to PM2:', err); - pm2.disconnect(); - resolve(); - return; - } - - pm2.list((err, list) => { - if (err) { - console.error('Error getting PM2 process list:', err); - pm2.disconnect(); - resolve(); - return; - } - - // Update PM2 services status - list.forEach(process => { - pm2ServicesStatus[process.name] = { - name: process.name, - id: process.pm_id, - status: process.pm2_env.status, - cpu: process.monit ? process.monit.cpu : null, - memory: process.monit ? process.monit.memory : null, - uptime: process.pm2_env.pm_uptime ? - Date.now() - process.pm2_env.pm_uptime : - null, - restarts: process.pm2_env.restart_time, - lastChecked: new Date().toISOString() - }; - }); - - pm2.disconnect(); - resolve(); - }); - }); - }); + return new Promise((resolve, reject) => { + pm2.connect(function(err) { + if (err) { + console.error('Error connecting to PM2:', err); + pm2.disconnect(); + resolve(); + return; + } + + pm2.list((err, list) => { + if (err) { + console.error('Error getting PM2 process list:', err); + pm2.disconnect(); + resolve(); + return; + } + + // Update PM2 services status + list.forEach(process => { + // Calculate uptime correctly - pm_uptime is a timestamp, not a duration + const uptimeMs = process.pm2_env.pm_uptime ? + Date.now() - process.pm2_env.pm_uptime : + null; + + pm2ServicesStatus[process.name] = { + name: process.name, + id: process.pm_id, + status: process.pm2_env.status, + cpu: process.monit ? process.monit.cpu : null, + memory: process.monit ? process.monit.memory : null, + uptime: uptimeMs, // Store the uptime in milliseconds + restarts: process.pm2_env.restart_time, + lastChecked: new Date().toISOString() + }; + }); + + pm2.disconnect(); + resolve(); + }); + }); + }); } async function checkAll() {