Low overhead
The hot path is native Rust. snapshot() reads only the
current process โ no full system scan.
Collect process metrics โ CPU, memory, threads, uptime โ with very low overhead. A native core built with napi-rs, exposed through a clean TypeScript API.
npm install rust-node-monitor
import { snapshot } from "rust-node-monitor";
console.log(snapshot());
// {
// pid: 12345,
// cpuPercent: 12.5,
// memoryRss: 84520960,
// memoryVirtual: 312000000,
// threads: 8,
// uptimeSeconds: 3600,
// timestamp: 1710000000
// }
The hot path is native Rust. snapshot() reads only the
current process โ no full system scan.
Built with napi-rs. Memory via sysinfo, thread count
via /proc and Mach APIs.
No compiler at install time. macOS, Linux and Windows binaries bundled in a single package.
Generated .d.ts, clean camelCase fields, and dual
CommonJS + ESM output.
The Monitor class samples periodically for reliable,
delta-based CPU usage.
Drop-in middleware for Express, a Fastify plugin, and a NestJS interceptor.
import { snapshot, hello } from "rust-node-monitor";
console.log(hello()); // "Hello from Rust"
const metrics = snapshot();
console.log(metrics.pid);
console.log(metrics.memoryRss);
console.log(metrics.cpuPercent);
import { Monitor } from "rust-node-monitor";
const monitor = new Monitor({ intervalMs: 1000 });
monitor.start();
setInterval(() => {
console.log(monitor.stats());
}, 1000);
import { Monitor, prometheus } from "rust-node-monitor";
const monitor = new Monitor().start();
app.get("/metrics", (req, res) => {
res.type("text/plain").send(prometheus(monitor.stats()));
});
import { monitorMiddleware }
from "rust-node-monitor/express";
app.use(monitorMiddleware());
import { monitorPlugin }
from "rust-node-monitor/fastify";
fastify.register(monitorPlugin);
import { RustNodeMonitorInterceptor }
from "rust-node-monitor/nestjs";
app.useGlobalInterceptors(
new RustNodeMonitorInterceptor());