Opis działania rozwiązania
Zadaniem mini serwera będzie serwowanie w sieci lokalnej na potrzeby innych aplikacji i monitoringu pliku /run/pve-extra-metrics.json tworzonego dynamicznie przez usługę pve-extra-metrics.service. Rozwiązanie to opisane jest dokładnie na stronie https://itadmin.vblog.ovh/proxmox-ve-9-1-4-wlasna-modyfikacja-okna-summary-w-konsoli-gui/
Utworzenie mini serwera w Python 3
Tworzymy skrypt python do uruchomienia mini serwera na porcie 8080 i serwowaniu tylko 1 pliku /run/pve-extra-metrics.json
#!/usr/bin/env python3
from http.server import BaseHTTPRequestHandler, HTTPServer
SRC = "/run/pve-extra-metrics.json"
class H(BaseHTTPRequestHandler):
def do_GET(self):
if self.path not in ("/pve_stats.json", "/pve_stats.json/"):
self.send_response(404); self.end_headers()
self.wfile.write(b"Not found\n")
return
try:
with open(SRC, "rb") as f:
data = f.read()
self.send_response(200)
self.send_header("Content-Type", "application/json")
self.send_header("Cache-Control", "no-store")
self.end_headers()
self.wfile.write(data)
except Exception as e:
self.send_response(500); self.end_headers()
self.wfile.write(str(e).encode() + b"\n")
def log_message(self, *args): # ciszej w logach
pass
if __name__ == "__main__":
HTTPServer(("0.0.0.0", 8080), H).serve_forever()
PYUtworzenie usługi systemd oraz python endpoint
Aby mini serwer miał charakter trwały niezależny od sesji użytkownika należy utworzyć usługę systemową.
cat >/etc/systemd/system/pve-metrics-http.service <<'UNIT' [Unit] Description=PVE metrics tiny HTTP server After=network-online.target Wants=network-online.target [Service] ExecStart=/usr/local/sbin/pve-metrics-http.py Restart=always RestartSec=2 User=root [Install] WantedBy=multi-user.target UNIT
Włączenie, uruchomienie i weryfikacja działania usługi
systemctl daemon-reload
systemctl enable --now pve-metrics-http.service
systemctl status pve-metrics-http.service
● pve-metrics-http.service - PVE metrics tiny HTTP server
Loaded: loaded (/etc/systemd/system/pve-metrics-http.service; enabled; preset: enabled)
Active: active (running) since Thu 2026-02-12 19:21:36 CET; 7s ago
Invocation: 1730bc160ee34143882ac79f677d4f58
Main PID: 200257 (python3)
Tasks: 1 (limit: 134481)
Memory: 8.5M (peak: 9.2M)
CPU: 71ms
CGroup: /system.slice/pve-metrics-http.service
└─200257 python3 /usr/local/sbin/pve-metrics-http.py
Feb 12 19:21:36 pve systemd[1]: Started pve-metrics-http.service - PVE metrics tiny HTTP server.
Weryfikacja działania mini serwera
Z innego serwera / klienta: curl -s http://192.168.8.20:8080/pve_stats.json | jq .
root@docker:~# curl -s http://192.168.8.20:8080/pve_stats.json | jq .
{
"hostname": "pve",
"pve_version": "pve-manager/9.1.4/5ac30304265fbd8e (running kernel: 6.17.4-2-pve)",
"kernel": "6.17.4-2-pve",
"uptime_seconds": 18385,
"uptime_human": "up 5 hours, 6 minutes",
"cpu_usage": 23,
"sys_io_delay": 0.14,
"sys_load": "7.14,7.00,6.83",
"ram_usage_prc": 53,
"ram_usage_gb": 57.81,
"ram_available_gb": 51.86,
"ram_total_gb": 109.66,
"swap_usage_prc": 0,
"swap_usage_gb": 0.00,
"swap_total_gb": 8.00,
"ksm_sharing_gb": 22.13,
"sys_process": 455,
"sys_zombie": 0,
"users_logged": 2,
"root_fs_used_prc": 39,
"root_fs_used_gb": 1354.34,
"root_fs_total_gb": 3665.98,
"running_vms": 17,
"running_cts": 1,
"cpu_model": "AMD Ryzen AI 9 HX 370 w/ Radeon 890M",
"machine_vendor": "Micro Computer (HK) Tech Limited",
"machine_model": "AI Series 1.0",
"bios_vendor": "American Megatrends International, LLC.",
"bios_version": "1.05",
"bios_date": "10/10/2025",
"last_apt_upgrade": "2026-01-29 15:36:59",
"last_apt_upgrade_epoch": 1769697419,
"cpu_temp_c": 64.0,
"gpu_name": "Advanced Micro Devices, Inc. [AMD/ATI] Strix [Radeon 880M / 890M] (rev c1)",
"gpu_temp_c": 48.0,
"gpu_busy_percent": 0,
"gpu_vram_used_bytes": 151089152,
"gpu_vram_total_bytes": 17179869184,
"nvme_dev": "/dev/nvme0n1",
"nvme_model": "Acer SSD FA200 4TB",
"nvme_serial": "ASBE64050101558",
"nvme_smart_health": "PASSED",
"nvme_temp_c": 39,
"nvme_percent_used": 0,
"nvme_data_units_written_tb": 7.77,
"nvme_tbw_total_tb": 2000,
"nvme_written_vs_tbw": "7.77 TB / 2000 TB",
"outlet_power_w": 26.0,
"outlet_voltage_v": 212.0,
"outlet_energy_total_kwh": 0.15
}

