# My-MC.Link Status A real-time server monitoring application for Docker containers and system metrics, integrated with Netdata and Holesail process tracking. This project provides a web-based dashboard to monitor Docker container performance (CPU, memory, network) and host system metrics (CPU, RAM, network, disk I/O). ## Features - **Docker Monitoring**: Tracks running containers, CPU usage, memory usage, and network traffic for containers prefixed with `/mc_`. - **System Metrics**: Displays host CPU, RAM, network, and disk I/O metrics via Netdata integration. - **Holesail Process Tracking**: Monitors the number of active Holesail processes. - **Real-Time Updates**: Uses WebSocket to push updates every second to the frontend. - **Interactive Charts**: Visualizes data with Chart.js for Docker network traffic and system metrics. - **Responsive UI**: Styled with a Minecraft-themed design, including particle effects and gradient text. ## Prerequisites - **Node.js**: Version 18 or higher. - **Docker**: Installed and running with access to the Docker socket. - **Netdata**: Installed and accessible via a URL specified in the environment variables. - **Holesail**: Required for process tracking (optional, depending on usage). ## Installation 1. **Clone the Repository**: ```bash git clone git@git.ssh.surf:hypermc/my-mc-stats-website.git cd my-mc-stats-website ``` 2. **Install Dependencies**: ```bash npm install ``` 3. **Set Up Environment Variables**: Create a `.env` file in the project root and configure the following: ```env DOCKER_SOCKET_PATH=/var/run/docker.sock NETDATA_URL=http://:19999/api/v1 TOTAL_CORES= PORT=3000 ``` 4. **Run the Application**: - For production: ```bash npm start ``` - For development (with hot reloading): ```bash npm run dev ``` 5. **Access the Dashboard**: Open your browser and navigate to `http://localhost:3000` (or the port specified in `.env`). ## Project Structure - **`system-status.js`**: The main server-side script that: - Sets up an Express server and WebSocket connection. - Fetches Docker container stats using `dockerode`. - Retrieves Netdata metrics via HTTP requests. - Tracks Holesail process counts. - Sends real-time updates to clients via WebSocket. - **`status.html`**: The frontend dashboard that: - Displays Docker and system metrics in tables and charts. - Uses Chart.js for data visualization. - Connects to the WebSocket server for real-time updates. - Includes Minecraft-themed styling and particle effects. - **`package.json`**: Defines project metadata, scripts, and dependencies. ## Usage - **Dashboard Overview**: - **Docker Environment**: Shows total/running containers, CPU/memory usage, Holesail processes, disk usage, and AI fault counts. - **Container Tables**: Lists Minecraft containers sorted by CPU and memory usage. - **Host System Metrics**: Displays CPU, RAM, network, and disk I/O charts. - **Monitoring**: - Data updates every second via WebSocket. - Network and disk metrics are smoothed for better visualization. - Dynamic unit scaling (B/s, KB/s, MB/s, GB/s) for network and disk charts. ## Dependencies - **axios**: For making HTTP requests to Netdata. - **dockerode**: For interacting with the Docker API. - **dotenv**: For loading environment variables. - **express**: For the web server. - **ws**: For WebSocket communication. - **nodemon** (dev): For hot reloading during development. ## Acknowledgments - Powered by [Holesail](https://holesail.io). - Services donated by [SNXRaven](https://raven-scott.fyi). - Built with [Chart.js](https://www.chartjs.org) and [Netdata](https://www.netdata.cloud).