1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import { MongoInternals } from 'meteor/mongo';
- Meteor.methods({
- getStatistics() {
- const os = require('os');
- const pjson = require('/package.json');
- const statistics = {};
- let wekanVersion = pjson.version;
- wekanVersion = wekanVersion.replace('v', '');
- statistics.version = wekanVersion;
- statistics.os = {
- type: os.type(),
- platform: os.platform(),
- arch: os.arch(),
- release: os.release(),
- uptime: os.uptime(),
- loadavg: os.loadavg(),
- totalmem: os.totalmem(),
- freemem: os.freemem(),
- cpus: os.cpus(),
- };
- let nodeVersion = process.version;
- nodeVersion = nodeVersion.replace('v', '');
- statistics.process = {
- 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,
- };
- // 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,
- mongoStorageEngine,
- mongoOplogEnabled,
- };
- return statistics;
- },
- });
|