Simple project to get basic system stats of your server via FastAPI.
Based on psutil, fastapi, pydantic.
import requests
headers = {"token": "your_secret_token"}
answer = requests.get("domain.com/server_stats/", headers=headers)
print(answer){
"cpu_cores": 8,
"cpu_current_usage": 16.2,
"cpu_average_usage": 18.9,
"memory_total": 928375423,
"memory_percent_usage": 14.1,
"disc_total": 92837542398,
"disc_percent_usage": 13.6,
"current_network_usage": 98324,
"boot_time": 1725877431
}git clone https://github.com/P1nk-L0rD/server_stats.git
cd server_stats
echo "SERVER_STATS_TOKEN=TOKEN" > .env
docker-compose up -dgit clone https://github.com/P1nk-L0rD/server_stats.gitDownload python 3.10 env:
apt install python3.10-venv -yCreate and activate venv:
cd server_stats/
python3.10 -m venv venv
source venv/bin/activateInstall requirements:
pip install -r requirements.txtCreate .env with SERVER_STATS_TOKEN
touch .env
vim .env!!! Important: If you do not create .env, stats will be available without a token.
Create daemon:
sudo vim /etc/systemd/system/server_stats.serviceCopy daemon.txt to created file. Save it and exit.
Reload daemon service:
sudo systemctl daemon-reloadEnable and start daemon:
sudo systemctl enable server_stats.service
sudo systemctl start server_stats.serviceAdd code to your nginx default (/etc/nginx/sites-enabled/default):
location /server_stats/ {
proxy_pass http://127.0.0.1:8110;
}Full nginx default may look like this:
server {
listen 443;
server_name domain.com;
ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
location /server_stats/ {
proxy_pass http://127.0.0.1:8110;
}
}
Restart nginx:
systemctl reload nginxTo update server:
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -yTo update server_stats:
cd server_stats/
git pull
systemctl restart server_statsTo use without nginx, via port replace 127.0.0.1 -> 0.0.0.0 in daemon.