https://github.com/mambuzrrr/linux-system-information-api
Linux System API (CPU, RAM, Disk, Network & System Load)
https://github.com/mambuzrrr/linux-system-information-api
api cpu-monitoring disk go golang linux load network ram shell
Last synced: about 2 months ago
JSON representation
Linux System API (CPU, RAM, Disk, Network & System Load)
- Host: GitHub
- URL: https://github.com/mambuzrrr/linux-system-information-api
- Owner: mambuzrrr
- Created: 2024-11-29T20:49:03.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-11-29T21:10:07.000Z (over 1 year ago)
- Last Synced: 2024-12-28T10:39:03.008Z (over 1 year ago)
- Topics: api, cpu-monitoring, disk, go, golang, linux, load, network, ram, shell
- Language: Go
- Homepage: https://bjx.devluxe.eu
- Size: 4.88 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 🖥️ System Stats API for Linux
## About
Lightweight, fast system monitoring API written in Go.
Provides CPU, memory, disk, network and load metrics with both **raw** values and **strings**, e.g. `1.23 GB`, `12.34%`). Built for Linux (Debian/Ubuntu).
---
## 🌟 Key Features
- Background **StatsCollector** with configurable refresh interval (caches metrics to reduce request latency).
- Endpoints return both **raw** and **readable** fields for easy UI/alerts and programmatic use.
- `/health` endpoint (uptime, version, time).
- Logging + panic recovery middleware.
- Simple CORS header (`Access-Control-Allow-Origin: *`).
- Graceful shutdown (SIGINT/SIGTERM) and HTTP timeouts.
- Configurable via `config.json`.
---
## 🚀 Quickstart
### 1. Clone
```bash
git clone https://github.com/mambuzrrr/brejax-system-stats-api.git
cd brejax-system-stats-api
```
### 2. Install dependencies
Make sure you have Go installed (`go version` should return a valid version).
```bash
go mod tidy
```
### 3. Configure the API
Edit the `config.json` file to customize your port and endpoint paths:
```bash
{
"port": 8123,
"refresh_interval_sec": 5,
"version": "0.1.0",
"endpoints": {
"stats": "/system-stats",
"cpu": "/cpu-info",
"memory": "/memory-info",
"disk": "/disk-info",
"network": "/network-info",
"load": "/load-info",
"health": "/health"
}
}
```
### 4. Run the server
```bash
go run main.go
```
## 📡 API Endpoints
|Endpoint|Description|
| --- | --- |
| `/system-stats` | Full system stats: CPU, memory, disk, etc. |
| `/cpu-info` | Current CPU usage percentage. |
| `/memory-info` | RAM usage (total, used, percentage). |
| `/disk-info` | Disk usage (total, used, percentage). |
| `/network-info` | Network I/O statistics. |
| `/load-info` | System load averages (1, 5, 15 mins). |
| `/health` | Service health: `status`, `uptime`, `version`, `time` |
### Example: Full Stats Output (`/system-stats`)
```bash
{
"cpu": {
"raw": [1.23],
"readable": ["1.23%"]
},
"memory": {
"total": 33554432000,
"total_readable": "31.25 GB",
"used": 2264924160,
"used_readable": "2.11 GB",
"used_percent": 6.76,
"used_percent_readable": "6.76%"
},
"disk": {
"total": 500107862016,
"total_readable": "465.66 GB",
"used": 200123435008,
"used_readable": "186.38 GB",
"used_percent": 40.02,
"used_percent_readable": "40.02%"
},
"network": [
{
"name": "eth0",
"bytes_sent": 123456789,
"bytes_sent_readable": "117.74 MB",
"bytes_recv": 987654321,
"bytes_recv_readable": "941.90 MB"
}
],
"system_load": {
"raw": {"load1": 0.12, "load5": 0.15, "load15": 0.18},
"readable": {"load1": "0.12", "load5": "0.15", "load15": "0.18"}
},
"updated_at": "2025-09-12T13:13:34Z"
}
```