express-insights
Version:
Production-ready Express middleware for backend health monitoring with metrics, HTML/JSON output, authentication, and service checks.
43 lines (36 loc) • 1.54 kB
JavaScript
const { formatBytes, formatUptime, getDiskUsage, getNetworkInterfaces, getProcessInfo, getEnhancedSystemStats } = require('./utils');
const cache = new Map();
async function getDefaultStats(options = {}) {
const { version, includeNetwork, includeDisk, cacheTTL, resourceThresholds } = options;
const cacheKey = `default-stats:${includeNetwork}:${includeDisk}`;
const now = Date.now();
if (cache.has(cacheKey)) {
const cached = cache.get(cacheKey);
if (now - cached.timestamp < cacheTTL) {
return { ...cached.data, timestamp: new Date() };
}
}
const memUsage = process.memoryUsage();
const stats = {
status: 'healthy',
uptime: formatUptime(process.uptime()),
timestamp: new Date(),
version: version || '1.0.0',
environment: process.env.NODE_ENV || 'development',
memory: {
rss: formatBytes(memUsage.rss),
heapTotal: formatBytes(memUsage.heapTotal),
heapUsed: formatBytes(memUsage.heapUsed),
external: formatBytes(memUsage.external),
arrayBuffers: formatBytes(memUsage.arrayBuffers || 0),
heapUsedPercent: ((memUsage.heapUsed / memUsage.heapTotal) * 100).toFixed(2) + '%',
},
system: getEnhancedSystemStats(resourceThresholds),
process: getProcessInfo(),
};
if (includeNetwork) stats.network = getNetworkInterfaces();
if (includeDisk) stats.disk = await getDiskUsage();
cache.set(cacheKey, { data: stats, timestamp: now });
return stats;
}
module.exports = { getDefaultStats };