statistics.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import { MongoInternals } from 'meteor/mongo';
  2. Meteor.methods({
  3. getStatistics() {
  4. const os = require('os');
  5. const pjson = require('/package.json');
  6. const statistics = {};
  7. let wekanVersion = pjson.version;
  8. wekanVersion = wekanVersion.replace('v', '');
  9. statistics.version = wekanVersion;
  10. statistics.os = {
  11. type: os.type(),
  12. platform: os.platform(),
  13. arch: os.arch(),
  14. release: os.release(),
  15. uptime: os.uptime(),
  16. loadavg: os.loadavg(),
  17. totalmem: os.totalmem(),
  18. freemem: os.freemem(),
  19. cpus: os.cpus(),
  20. };
  21. let nodeVersion = process.version;
  22. nodeVersion = nodeVersion.replace('v', '');
  23. statistics.process = {
  24. nodeVersion,
  25. pid: process.pid,
  26. uptime: process.uptime(),
  27. };
  28. // Remove beginning of Meteor release text METEOR@
  29. let meteorVersion = Meteor.release;
  30. meteorVersion = meteorVersion.replace('METEOR@', '');
  31. statistics.meteor = {
  32. meteorVersion,
  33. };
  34. // Thanks to RocketChat for MongoDB version detection !
  35. // https://github.com/RocketChat/Rocket.Chat/blob/develop/app/utils/server/functions/getMongoInfo.js
  36. let mongoVersion;
  37. let mongoStorageEngine;
  38. let mongoOplogEnabled;
  39. try {
  40. const { mongo } = MongoInternals.defaultRemoteCollectionDriver();
  41. oplogEnabled = Boolean(
  42. mongo._oplogHandle && mongo._oplogHandle.onOplogEntry,
  43. );
  44. const { version, storageEngine } = Promise.await(
  45. mongo.db.command({ serverStatus: 1 }),
  46. );
  47. mongoVersion = version;
  48. mongoStorageEngine = storageEngine.name;
  49. mongoOplogEnabled = oplogEnabled;
  50. } catch (e) {
  51. try {
  52. const { version } = Promise.await(mongo.db.command({ buildinfo: 1 }));
  53. mongoVersion = version;
  54. mongoStorageEngine = 'unknown';
  55. } catch (e) {
  56. mongoVersion = 'unknown';
  57. mongoStorageEngine = 'unknown';
  58. }
  59. }
  60. statistics.mongo = {
  61. mongoVersion,
  62. mongoStorageEngine,
  63. mongoOplogEnabled,
  64. };
  65. return statistics;
  66. },
  67. });