StatsMonit is a lightweight server monitoring tool built with Node.js and Socket.io. It provides real-time system statistics, including CPU usage, RAM usage, disk space, network activity, and uptime.
- Real-time Monitoring: Get live updates every 3 seconds.
- CPU Usage: Shows CPU load percentage and model details.
- Memory Usage: Displays RAM consumption with detailed usage statistics.
- Temperature: Displays CPU temperature in real-time
- Disk Statistics: Provides total, used, and available disk space.
- Network Traffic: Monitors incoming and outgoing network activity.
- Cross-platform: Works on Linux, Windows, and macOS.
- Node.js (v18 or higher)
- NPM (comes with Node.js)
- g++ (to compile some packages)
- cmake (to compile some packages)
You can pull the prebuilt image directly from GitHub Container Registry (GHCR) without building locally.
docker pull ghcr.io/cabrata/statsmonit:latestdocker run -d \
--name statsmonit \
-p 8088:8088 \
-e PORT=8088 \
--restart unless-stopped \
--privileged \
ghcr.io/cabrata/statsmonit:latestThen open:
http://localhost:8088
Instead of building locally, use the remote image:
services:
statsmonit:
image: ghcr.io/cabrata/statsmonit:latest
container_name: statsmonit
restart: unless-stopped
ports:
- "8088:8088"
environment:
- PORT=8088
privileged: trueRun:
docker compose pull
docker compose up -dIf you want to monitor the host system instead of the container, add:
volumes:
- /:/host:ro,rslave-
Clone this repository:
git clone https://github.com/cabrata/statsmonit
-
Navigate into the project folder:
cd statsmonit -
Install dependencies:
npm install
-
(Optional) Configure environment variables: Create a
.envfile and specify the port (default:8088).PORT=8088
You can easily run StatsMonit using Docker.
-
Using Docker Compose:
docker-compose up -d --build
-
Using Docker CLI:
docker build -t statsmonit . docker run -d -p 8088:8088 --name statsmonit statsmonit
Run the following command to start the monitoring service:
npm startor manually using:
node index.jsOnce the server is running, open your browser and visit:
http://localhost:8088
The server will continuously send system statistics to the client using WebSockets (Socket.io).
-
Server Setup
- Uses Express.js to serve static files.
- Runs an HTTP server with Socket.io for real-time communication.
-
Data Collection
- Uses OS module to fetch CPU, RAM, and system details.
- Uses diskusage to check disk space.
- Uses systeminformation to get CPU temperature data
- Uses node-os-utils to fetch CPU and network statistics.
-
Real-time Updates
- The server collects system stats every 3 seconds.
- Data is sent to connected clients via WebSockets.
If you are using Tailwind CSS for styling, you can compile the CSS using:
npm run buildThis will generate a minified CSS file for production.
Contributions are welcome! Feel free to open an issue or submit a pull request if you find any improvements or bugs.
This project is licensed under the MIT License.