From 9ac84e385b5c194d054379a50c79be571f8d248a Mon Sep 17 00:00:00 2001 From: Kristjan ESPERANTO <35647502+KristjanESPERANTO@users.noreply.github.com> Date: Wed, 3 Jan 2024 03:00:09 +0100 Subject: [PATCH 1/9] Add systeminfo --- CHANGELOG.md | 4 +++- js/app.js | 3 +++ js/utils.js | 22 ++++++++++++++++++++++ package-lock.json | 28 +++++++++++++++++++++++++++- package.json | 3 ++- 5 files changed, 57 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f552cc368..3014d88910 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). -❤️ **Donate:** Enjoying MagicMirror²? [Please consider a donation!](https://magicmirror.builders/donate) With your help we can continue to improve the MagicMirror². +❤️ **Donate:** Enjoying MagicMirror²? [Please consider a donation!](https://magicmirror.builders/#donate) With your help we can continue to improve the MagicMirror². ## [2.27.0] - Develop Branch (unreleased) @@ -11,6 +11,8 @@ _This release is scheduled to be released on 2024-04-01._ ### Added +- Output of system information to the console for troubleshooting (#3328). + ### Updated ### Fixed diff --git a/js/app.js b/js/app.js index eabdf73112..7f4335efaf 100644 --- a/js/app.js +++ b/js/app.js @@ -21,6 +21,9 @@ const defaultModules = require(`${__dirname}/../modules/default/defaultmodules`) global.version = require(`${__dirname}/../package.json`).version; Log.log(`Starting MagicMirror: v${global.version}`); +// Log system information. +Utils.logSystemInformation(); + // global absolute root path global.root_path = path.resolve(`${__dirname}/../`); diff --git a/js/utils.js b/js/utils.js index d111afca23..a297701daf 100644 --- a/js/utils.js +++ b/js/utils.js @@ -5,6 +5,14 @@ * MIT Licensed. */ const colors = require("colors/safe"); +const Log = require("logger"); +const si = require("systeminformation"); + +try { + global.electronVersion = require(`${__dirname}/../node_modules/electron/package.json`).version; +} catch (error) { + Log.error(`Can't find electron. Have you performed 'npm run install-mm'? ${error}`); +} module.exports = { colors: { @@ -12,5 +20,19 @@ module.exports = { error: colors.red, info: colors.blue, pass: colors.green + }, + + async logSystemInformation () { + try { + const staticData = await si.getStaticData(); + let systemDataString = "The following lines provide information about your system and may be of interest when troubleshooting."; + systemDataString += `\n ### SYSTEM: manufacturer: ${staticData["system"]["manufacturer"]}; model: ${staticData["system"]["model"]}; raspberry: ${staticData["system"]["raspberry"]}; virtual: ${staticData["system"]["virtual"]}`; + systemDataString += `\n ### OS: platform: ${staticData["os"]["platform"]}; distro: ${staticData["os"]["distro"]}; release: ${staticData["os"]["release"]}`; + systemDataString += `\n ### VERSIONS: MagicMirror: ${global.version}; electron: ${global.electronVersion}; kernel: ${staticData["versions"]["kernel"]}; node: ${staticData["versions"]["node"]}; npm: ${staticData["versions"]["npm"]}; pm2: ${staticData["versions"]["pm2"]}; docker: ${staticData["versions"]["docker"]}`; + if (typeof staticData["dockerInfo"] !== "undefined") systemDataString += `\n ### DOCKER: containers: ${staticData["dockerInfo"]["containers"]}; operatingSystem: ${staticData["dockerInfo"]["operatingSystem"]}; osType: ${staticData["versions"]["osType"]}; architecture: ${staticData["versions"]["architecture"]}; serverVersion: ${staticData["versions"]["serverVersion"]}`; + Log.info(systemDataString); + } catch (e) { + Log.error(e); + } } }; diff --git a/package-lock.json b/package-lock.json index b20fbb0054..3e1330b197 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,8 @@ "module-alias": "^2.2.3", "moment": "^2.30.1", "node-ical": "^0.17.1", - "socket.io": "^4.7.2" + "socket.io": "^4.7.2", + "systeminformation": "^5.21.22" }, "devDependencies": { "@stylistic/eslint-plugin": "^1.5.1", @@ -9297,6 +9298,31 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, + "node_modules/systeminformation": { + "version": "5.21.22", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.21.22.tgz", + "integrity": "sha512-gNHloAJSyS+sKWkwvmvozZ1eHrdVTEsynWMTY6lvLGBB70gflkBQFw8drXXr1oEXY84+Vr9tOOrN8xHZLJSycA==", + "os": [ + "darwin", + "linux", + "win32", + "freebsd", + "openbsd", + "netbsd", + "sunos", + "android" + ], + "bin": { + "systeminformation": "lib/cli.js" + }, + "engines": { + "node": ">=8.0.0" + }, + "funding": { + "type": "Buy me a coffee", + "url": "https://www.buymeacoffee.com/systeminfo" + } + }, "node_modules/table": { "version": "6.8.1", "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", diff --git a/package.json b/package.json index 4bd3139981..17151bba14 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,8 @@ "module-alias": "^2.2.3", "moment": "^2.30.1", "node-ical": "^0.17.1", - "socket.io": "^4.7.2" + "socket.io": "^4.7.2", + "systeminformation": "^5.21.22" }, "lint-staged": { "*": "prettier --write", From e327ac55a10782239acbbb1b5141d10b9f1f944f Mon Sep 17 00:00:00 2001 From: Kristjan ESPERANTO <35647502+KristjanESPERANTO@users.noreply.github.com> Date: Wed, 3 Jan 2024 12:41:13 +0100 Subject: [PATCH 2/9] Change first line --- js/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/utils.js b/js/utils.js index a297701daf..09b7e10049 100644 --- a/js/utils.js +++ b/js/utils.js @@ -25,7 +25,7 @@ module.exports = { async logSystemInformation () { try { const staticData = await si.getStaticData(); - let systemDataString = "The following lines provide information about your system and may be of interest when troubleshooting."; + let systemDataString = "System information:"; systemDataString += `\n ### SYSTEM: manufacturer: ${staticData["system"]["manufacturer"]}; model: ${staticData["system"]["model"]}; raspberry: ${staticData["system"]["raspberry"]}; virtual: ${staticData["system"]["virtual"]}`; systemDataString += `\n ### OS: platform: ${staticData["os"]["platform"]}; distro: ${staticData["os"]["distro"]}; release: ${staticData["os"]["release"]}`; systemDataString += `\n ### VERSIONS: MagicMirror: ${global.version}; electron: ${global.electronVersion}; kernel: ${staticData["versions"]["kernel"]}; node: ${staticData["versions"]["node"]}; npm: ${staticData["versions"]["npm"]}; pm2: ${staticData["versions"]["pm2"]}; docker: ${staticData["versions"]["docker"]}`; From 1ba17424a8c093ce1939b3824149d9291d877b5e Mon Sep 17 00:00:00 2001 From: Kristjan ESPERANTO <35647502+KristjanESPERANTO@users.noreply.github.com> Date: Wed, 3 Jan 2024 18:30:21 +0100 Subject: [PATCH 3/9] Better approch for electron version for serverles --- js/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/utils.js b/js/utils.js index 09b7e10049..7da6f893f9 100644 --- a/js/utils.js +++ b/js/utils.js @@ -11,7 +11,7 @@ const si = require("systeminformation"); try { global.electronVersion = require(`${__dirname}/../node_modules/electron/package.json`).version; } catch (error) { - Log.error(`Can't find electron. Have you performed 'npm run install-mm'? ${error}`); + global.electronVersion = "not installed"; } module.exports = { From 760e4cf4c41478aca04c140fd0743aae0d0169ec Mon Sep 17 00:00:00 2001 From: Kristjan ESPERANTO <35647502+KristjanESPERANTO@users.noreply.github.com> Date: Thu, 4 Jan 2024 08:04:16 +0100 Subject: [PATCH 4/9] Switch to process.versions.electron --- js/utils.js | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/js/utils.js b/js/utils.js index 7da6f893f9..25b3c12dbc 100644 --- a/js/utils.js +++ b/js/utils.js @@ -8,12 +8,6 @@ const colors = require("colors/safe"); const Log = require("logger"); const si = require("systeminformation"); -try { - global.electronVersion = require(`${__dirname}/../node_modules/electron/package.json`).version; -} catch (error) { - global.electronVersion = "not installed"; -} - module.exports = { colors: { warn: colors.yellow, @@ -28,7 +22,7 @@ module.exports = { let systemDataString = "System information:"; systemDataString += `\n ### SYSTEM: manufacturer: ${staticData["system"]["manufacturer"]}; model: ${staticData["system"]["model"]}; raspberry: ${staticData["system"]["raspberry"]}; virtual: ${staticData["system"]["virtual"]}`; systemDataString += `\n ### OS: platform: ${staticData["os"]["platform"]}; distro: ${staticData["os"]["distro"]}; release: ${staticData["os"]["release"]}`; - systemDataString += `\n ### VERSIONS: MagicMirror: ${global.version}; electron: ${global.electronVersion}; kernel: ${staticData["versions"]["kernel"]}; node: ${staticData["versions"]["node"]}; npm: ${staticData["versions"]["npm"]}; pm2: ${staticData["versions"]["pm2"]}; docker: ${staticData["versions"]["docker"]}`; + systemDataString += `\n ### VERSIONS: MagicMirror: ${global.version}; electron: ${process.versions.electron}; kernel: ${staticData["versions"]["kernel"]}; node: ${staticData["versions"]["node"]}; npm: ${staticData["versions"]["npm"]}; pm2: ${staticData["versions"]["pm2"]}; docker: ${staticData["versions"]["docker"]}`; if (typeof staticData["dockerInfo"] !== "undefined") systemDataString += `\n ### DOCKER: containers: ${staticData["dockerInfo"]["containers"]}; operatingSystem: ${staticData["dockerInfo"]["operatingSystem"]}; osType: ${staticData["versions"]["osType"]}; architecture: ${staticData["versions"]["architecture"]}; serverVersion: ${staticData["versions"]["serverVersion"]}`; Log.info(systemDataString); } catch (e) { From bf5df7faeb451dfe80caa2b0b16bf8537fd277cc Mon Sep 17 00:00:00 2001 From: Kristjan ESPERANTO <35647502+KristjanESPERANTO@users.noreply.github.com> Date: Thu, 4 Jan 2024 08:05:01 +0100 Subject: [PATCH 5/9] Remove MM --- js/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/utils.js b/js/utils.js index 25b3c12dbc..88775209b5 100644 --- a/js/utils.js +++ b/js/utils.js @@ -22,7 +22,7 @@ module.exports = { let systemDataString = "System information:"; systemDataString += `\n ### SYSTEM: manufacturer: ${staticData["system"]["manufacturer"]}; model: ${staticData["system"]["model"]}; raspberry: ${staticData["system"]["raspberry"]}; virtual: ${staticData["system"]["virtual"]}`; systemDataString += `\n ### OS: platform: ${staticData["os"]["platform"]}; distro: ${staticData["os"]["distro"]}; release: ${staticData["os"]["release"]}`; - systemDataString += `\n ### VERSIONS: MagicMirror: ${global.version}; electron: ${process.versions.electron}; kernel: ${staticData["versions"]["kernel"]}; node: ${staticData["versions"]["node"]}; npm: ${staticData["versions"]["npm"]}; pm2: ${staticData["versions"]["pm2"]}; docker: ${staticData["versions"]["docker"]}`; + systemDataString += `\n ### VERSIONS: electron: ${process.versions.electron}; kernel: ${staticData["versions"]["kernel"]}; node: ${staticData["versions"]["node"]}; npm: ${staticData["versions"]["npm"]}; pm2: ${staticData["versions"]["pm2"]}; docker: ${staticData["versions"]["docker"]}`; if (typeof staticData["dockerInfo"] !== "undefined") systemDataString += `\n ### DOCKER: containers: ${staticData["dockerInfo"]["containers"]}; operatingSystem: ${staticData["dockerInfo"]["operatingSystem"]}; osType: ${staticData["versions"]["osType"]}; architecture: ${staticData["versions"]["architecture"]}; serverVersion: ${staticData["versions"]["serverVersion"]}`; Log.info(systemDataString); } catch (e) { From 021ac5d2e2a386b100adac32883f9e592b482d2e Mon Sep 17 00:00:00 2001 From: Kristjan ESPERANTO <35647502+KristjanESPERANTO@users.noreply.github.com> Date: Thu, 4 Jan 2024 08:06:17 +0100 Subject: [PATCH 6/9] Move kernel to OS --- js/utils.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/utils.js b/js/utils.js index 88775209b5..8d54efc858 100644 --- a/js/utils.js +++ b/js/utils.js @@ -21,8 +21,8 @@ module.exports = { const staticData = await si.getStaticData(); let systemDataString = "System information:"; systemDataString += `\n ### SYSTEM: manufacturer: ${staticData["system"]["manufacturer"]}; model: ${staticData["system"]["model"]}; raspberry: ${staticData["system"]["raspberry"]}; virtual: ${staticData["system"]["virtual"]}`; - systemDataString += `\n ### OS: platform: ${staticData["os"]["platform"]}; distro: ${staticData["os"]["distro"]}; release: ${staticData["os"]["release"]}`; - systemDataString += `\n ### VERSIONS: electron: ${process.versions.electron}; kernel: ${staticData["versions"]["kernel"]}; node: ${staticData["versions"]["node"]}; npm: ${staticData["versions"]["npm"]}; pm2: ${staticData["versions"]["pm2"]}; docker: ${staticData["versions"]["docker"]}`; + systemDataString += `\n ### OS: platform: ${staticData["os"]["platform"]}; distro: ${staticData["os"]["distro"]}; release: ${staticData["os"]["release"]}; kernel: ${staticData["versions"]["kernel"]}`; + systemDataString += `\n ### VERSIONS: electron: ${process.versions.electron}; node: ${staticData["versions"]["node"]}; npm: ${staticData["versions"]["npm"]}; pm2: ${staticData["versions"]["pm2"]}; docker: ${staticData["versions"]["docker"]}`; if (typeof staticData["dockerInfo"] !== "undefined") systemDataString += `\n ### DOCKER: containers: ${staticData["dockerInfo"]["containers"]}; operatingSystem: ${staticData["dockerInfo"]["operatingSystem"]}; osType: ${staticData["versions"]["osType"]}; architecture: ${staticData["versions"]["architecture"]}; serverVersion: ${staticData["versions"]["serverVersion"]}`; Log.info(systemDataString); } catch (e) { From 1c91bfcbf84c22bddad9aa0859ab3e8c3895fd54 Mon Sep 17 00:00:00 2001 From: Kristjan ESPERANTO <35647502+KristjanESPERANTO@users.noreply.github.com> Date: Thu, 4 Jan 2024 08:11:51 +0100 Subject: [PATCH 7/9] Add timeZone --- js/utils.js | 1 + 1 file changed, 1 insertion(+) diff --git a/js/utils.js b/js/utils.js index 8d54efc858..ca4adcfa39 100644 --- a/js/utils.js +++ b/js/utils.js @@ -24,6 +24,7 @@ module.exports = { systemDataString += `\n ### OS: platform: ${staticData["os"]["platform"]}; distro: ${staticData["os"]["distro"]}; release: ${staticData["os"]["release"]}; kernel: ${staticData["versions"]["kernel"]}`; systemDataString += `\n ### VERSIONS: electron: ${process.versions.electron}; node: ${staticData["versions"]["node"]}; npm: ${staticData["versions"]["npm"]}; pm2: ${staticData["versions"]["pm2"]}; docker: ${staticData["versions"]["docker"]}`; if (typeof staticData["dockerInfo"] !== "undefined") systemDataString += `\n ### DOCKER: containers: ${staticData["dockerInfo"]["containers"]}; operatingSystem: ${staticData["dockerInfo"]["operatingSystem"]}; osType: ${staticData["versions"]["osType"]}; architecture: ${staticData["versions"]["architecture"]}; serverVersion: ${staticData["versions"]["serverVersion"]}`; + systemDataString += `\n ### OTHER: timeZone: ${Intl.DateTimeFormat().resolvedOptions().timeZone}`; Log.info(systemDataString); } catch (e) { Log.error(e); From 474899b11d2cfda1340322404b70da29fd0400eb Mon Sep 17 00:00:00 2001 From: Kristjan ESPERANTO <35647502+KristjanESPERANTO@users.noreply.github.com> Date: Thu, 4 Jan 2024 08:14:12 +0100 Subject: [PATCH 8/9] Add arch --- js/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/utils.js b/js/utils.js index ca4adcfa39..8ce563e5af 100644 --- a/js/utils.js +++ b/js/utils.js @@ -21,7 +21,7 @@ module.exports = { const staticData = await si.getStaticData(); let systemDataString = "System information:"; systemDataString += `\n ### SYSTEM: manufacturer: ${staticData["system"]["manufacturer"]}; model: ${staticData["system"]["model"]}; raspberry: ${staticData["system"]["raspberry"]}; virtual: ${staticData["system"]["virtual"]}`; - systemDataString += `\n ### OS: platform: ${staticData["os"]["platform"]}; distro: ${staticData["os"]["distro"]}; release: ${staticData["os"]["release"]}; kernel: ${staticData["versions"]["kernel"]}`; + systemDataString += `\n ### OS: platform: ${staticData["os"]["platform"]}; distro: ${staticData["os"]["distro"]}; release: ${staticData["os"]["release"]}; arch: ${staticData["os"]["arch"]}; kernel: ${staticData["versions"]["kernel"]}`; systemDataString += `\n ### VERSIONS: electron: ${process.versions.electron}; node: ${staticData["versions"]["node"]}; npm: ${staticData["versions"]["npm"]}; pm2: ${staticData["versions"]["pm2"]}; docker: ${staticData["versions"]["docker"]}`; if (typeof staticData["dockerInfo"] !== "undefined") systemDataString += `\n ### DOCKER: containers: ${staticData["dockerInfo"]["containers"]}; operatingSystem: ${staticData["dockerInfo"]["operatingSystem"]}; osType: ${staticData["versions"]["osType"]}; architecture: ${staticData["versions"]["architecture"]}; serverVersion: ${staticData["versions"]["serverVersion"]}`; systemDataString += `\n ### OTHER: timeZone: ${Intl.DateTimeFormat().resolvedOptions().timeZone}`; From 13f8b76c8a76beb6e727d2e3391941ee32554c2e Mon Sep 17 00:00:00 2001 From: Kristjan ESPERANTO <35647502+KristjanESPERANTO@users.noreply.github.com> Date: Thu, 4 Jan 2024 22:32:37 +0100 Subject: [PATCH 9/9] Remove unused dockerInfo --- js/utils.js | 1 - 1 file changed, 1 deletion(-) diff --git a/js/utils.js b/js/utils.js index 8ce563e5af..38f6ca8ba1 100644 --- a/js/utils.js +++ b/js/utils.js @@ -23,7 +23,6 @@ module.exports = { systemDataString += `\n ### SYSTEM: manufacturer: ${staticData["system"]["manufacturer"]}; model: ${staticData["system"]["model"]}; raspberry: ${staticData["system"]["raspberry"]}; virtual: ${staticData["system"]["virtual"]}`; systemDataString += `\n ### OS: platform: ${staticData["os"]["platform"]}; distro: ${staticData["os"]["distro"]}; release: ${staticData["os"]["release"]}; arch: ${staticData["os"]["arch"]}; kernel: ${staticData["versions"]["kernel"]}`; systemDataString += `\n ### VERSIONS: electron: ${process.versions.electron}; node: ${staticData["versions"]["node"]}; npm: ${staticData["versions"]["npm"]}; pm2: ${staticData["versions"]["pm2"]}; docker: ${staticData["versions"]["docker"]}`; - if (typeof staticData["dockerInfo"] !== "undefined") systemDataString += `\n ### DOCKER: containers: ${staticData["dockerInfo"]["containers"]}; operatingSystem: ${staticData["dockerInfo"]["operatingSystem"]}; osType: ${staticData["versions"]["osType"]}; architecture: ${staticData["versions"]["architecture"]}; serverVersion: ${staticData["versions"]["serverVersion"]}`; systemDataString += `\n ### OTHER: timeZone: ${Intl.DateTimeFormat().resolvedOptions().timeZone}`; Log.info(systemDataString); } catch (e) {