diff options
Diffstat (limited to 'server/statistics.js')
-rw-r--r-- | server/statistics.js | 48 |
1 files changed, 45 insertions, 3 deletions
diff --git a/server/statistics.js b/server/statistics.js index 1fbaecc9..288a5089 100644 --- a/server/statistics.js +++ b/server/statistics.js @@ -1,9 +1,13 @@ +import { MongoInternals } from 'meteor/mongo'; + Meteor.methods({ getStatistics() { const os = require('os'); const pjson = require('/package.json'); const statistics = {}; - statistics.version = pjson.version; + let wekanVersion = pjson.version; + wekanVersion = wekanVersion.replace('v', ''); + statistics.version = wekanVersion; statistics.os = { type: os.type(), platform: os.platform(), @@ -15,12 +19,50 @@ Meteor.methods({ freemem: os.freemem(), cpus: os.cpus(), }; + let nodeVersion = process.version; + nodeVersion = nodeVersion.replace('v', ''); statistics.process = { - nodeVersion: process.version, + nodeVersion: nodeVersion, pid: process.pid, uptime: process.uptime(), }; - + // Remove beginning of Meteor release text METEOR@ + let meteorVersion = Meteor.release; + meteorVersion = meteorVersion.replace('METEOR@', ''); + statistics.meteor = { + meteorVersion: meteorVersion, + }; + // Thanks to RocketChat for MongoDB version detection ! + // https://github.com/RocketChat/Rocket.Chat/blob/develop/app/utils/server/functions/getMongoInfo.js + let mongoVersion; + let mongoStorageEngine; + let mongoOplogEnabled; + try { + const { mongo } = MongoInternals.defaultRemoteCollectionDriver(); + oplogEnabled = Boolean( + mongo._oplogHandle && mongo._oplogHandle.onOplogEntry, + ); + const { version, storageEngine } = Promise.await( + mongo.db.command({ serverStatus: 1 }), + ); + mongoVersion = version; + mongoStorageEngine = storageEngine.name; + mongoOplogEnabled = oplogEnabled; + } catch (e) { + try { + const { version } = Promise.await(mongo.db.command({ buildinfo: 1 })); + mongoVersion = version; + mongoStorageEngine = 'unknown'; + } catch (e) { + mongoVersion = 'unknown'; + mongoStorageEngine = 'unknown'; + } + } + statistics.mongo = { + mongoVersion: mongoVersion, + mongoStorageEngine: mongoStorageEngine, + mongoOplogEnabled: mongoOplogEnabled, + }; return statistics; }, }); |