UNPKG

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
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 };