1. /**
  2. * Collects runtime environment metrics with limited memory usage.
  3. * @returns {object} An object containing runtime metrics.
  4. */
  5. function collectRuntimeMetrics() {
  6. const metrics = {};
  7. // CPU information
  8. metrics.cpu = {
  9. user: process.cpuUsage().user,
  10. system: process.cpuUsage().system,
  11. idle: process.cpuUsage().idle
  12. };
  13. // Memory information
  14. metrics.memory = {
  15. total: process.memoryUsage().totalHeapUsed, // Total heap used
  16. rss: process.memoryUsage().rss, // Resident Set Size (physical memory)
  17. heapTotal: process.memoryUsage().heapTotal, //Total heap size
  18. heapUsed: process.memoryUsage().heapUsed //Used heap size
  19. };
  20. // Node.js version
  21. metrics.nodejsVersion = process.version;
  22. // Operating system
  23. metrics.os = process.platform + " " + process.release(); //Platform and release version
  24. // Environment variables (limited to a few key ones)
  25. metrics.environment = {};
  26. for (const key in process.env) {
  27. if (key.startsWith('NODE_')) { //Only collect NODE_ variables
  28. metrics.environment[key] = process.env[key];
  29. }
  30. }
  31. // Time information
  32. metrics.startTime = Date.now();
  33. return metrics;
  34. }
  35. // Example usage (for testing)
  36. // const metrics = collectRuntimeMetrics();
  37. // console.log(JSON.stringify(metrics, null, 2));

Add your comment