Selaa lähdekoodia

Fixed container stat charts

lllllllillllllillll 1 vuosi sitten
vanhempi
commit
8feb88a2a0
2 muutettua tiedostoa jossa 25 lisäystä ja 40 poistoa
  1. 23 38
      server.js
  2. 2 2
      views/dashboard.html

+ 23 - 38
server.js

@@ -334,46 +334,31 @@ router.get('/modal', async (req, res) => {
 });
 
 
-
-let dockerStats = {};
-setInterval(async () => {
-
-    const data = await docker.listContainers({ all: true });
-    for (const container of data) {
-        let name = container.Names[0].slice(1);
-        if (!hidden.includes(name)) {
-            const stats = await dockerContainerStats(container.Id);
-            let cpu = Math.round(stats[0].cpuPercent);
-            let ram = Math.round(stats[0].memPercent);
-
-            if (!dockerStats[name]) {
-                dockerStats[name] = Array(15).fill({ cpu: 0, ram: 0 });
-            }
-
-            dockerStats[name].push({ cpu: cpu, ram: ram });
-
-            if (dockerStats[name].length > 15) {
-                dockerStats[name].shift();
-            }
-        }
-    }
-    // console.log(dockerStats);
-
-}, 1000);
-
-
+let stats = {};
 router.get('/chart', async (req, res) => {
     let name = req.header('hx-trigger-name');
-
-    // console.log(dockerStats[name]);
+    // create an empty array if it doesn't exist
+    if (!stats[name]) {
+        stats[name] = { cpuArray: Array(15).fill(0), ramArray: Array(15).fill(0) };
+    }
+    // get the stats
+    const info = await dockerContainerStats(name);
+    // update the arrays
+    stats[name].cpuArray.push(Math.round(info[0].cpuPercent));
+    stats[name].ramArray.push(Math.round(info[0].memPercent));
+    // slice them down to the last 15 values
+    stats[name].cpuArray = stats[name].cpuArray.slice(-15);
+    stats[name].ramArray = stats[name].ramArray.slice(-15);
 
     let chart = `
-    <script>
-        ${name}chart.appendData([{
-            data: [100]
-        }, {
-            data: [25]
-        }])
-    </script>`
+        <script>
+            ${name}chart.updateSeries([{
+                data: ${JSON.stringify(stats[name].cpuArray)}
+            }, {
+                data: ${JSON.stringify(stats[name].ramArray)}
+            }])
+        </script>`
     res.send(chart);
-});
+});
+
+

+ 2 - 2
views/dashboard.html

@@ -217,10 +217,10 @@
         },
         series: [{
           name: "CPU",
-          data: [0,0,0,0,0,0,0,0,0,0]
+          data: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
         }, {
           name: "RAM",
-          data: [0,0,0,0,0,0,0,0,0,0]
+          data: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
         }],
         tooltip: {
           enabled: false