Monitoring: Server-Auslastung über P42-S.M. mit Detailansicht und 2-Tage-Verlauf
- Neue Prüfart "Server-Auslastung (P42-S.M.)": Adresse + Token (Token bleibt im Backend, wird nie an den Browser gegeben) - Karte zeigt CPU, RAM, vollste Platte, Load, Temperatur, Uptime - Klick öffnet große Ansicht: Kacheln, Platten, Threads, Temperaturen, Netzwerk, Verlaufsdiagramme (6 h / 24 h / 2 Tage) mit Tooltip und Tabelle - Hintergrund-Task speichert jede Minute einen Mittelwert (monitor_samples, 2 Tage), unabhängig davon, ob die Seite offen ist - Docker: zusätzlich im Netz p42, update-docker.sh legt es bei Bedarf an Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
94bda25516
commit
f16c8c73c6
13 files changed
+923
-35
No files matched your search
@@ -95,9 +95,26 @@ CREATE TABLE IF NOT EXISTS monitors (
|
||||
name TEXT NOT NULL,
|
||||
type TEXT NOT NULL,
|
||||
target TEXT NOT NULL,
|
||||
token TEXT, -- nur Typ "agent" (P42-S.M.); wird nie an den Browser gegeben
|
||||
created_at TEXT NOT NULL
|
||||
);
|
||||
|
||||
-- Verlauf der Server-Auslastung (Typ "agent"): ein Mittelwert pro Minute, 2 Tage lang
|
||||
CREATE TABLE IF NOT EXISTS monitor_samples (
|
||||
monitor_id INTEGER NOT NULL REFERENCES monitors(id) ON DELETE CASCADE,
|
||||
ts INTEGER NOT NULL, -- Unix-Zeit, auf die Minute gerundet
|
||||
cpu REAL,
|
||||
mem REAL,
|
||||
swap REAL,
|
||||
load1 REAL,
|
||||
rx REAL,
|
||||
tx REAL,
|
||||
rd REAL,
|
||||
wr REAL,
|
||||
temp REAL,
|
||||
PRIMARY KEY (monitor_id, ts)
|
||||
) WITHOUT ROWID;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS household_items {HOUSEHOLD_TABLE};
|
||||
|
||||
-- Produktkatalog für die Vorschläge
|
||||
@@ -290,6 +307,13 @@ def _migrate_kanban_priority(conn) -> None:
|
||||
)
|
||||
|
||||
|
||||
def _migrate_monitor_token(conn) -> None:
|
||||
# Monitore aus der Zeit vor P42-S.M.: Spalte für den Token ergänzen
|
||||
columns = {r["name"] for r in conn.execute("PRAGMA table_info(monitors)")}
|
||||
if "token" not in columns:
|
||||
conn.execute("ALTER TABLE monitors ADD COLUMN token TEXT")
|
||||
|
||||
|
||||
def _migrate_kanban_completed(conn) -> None:
|
||||
# Projekte "abgeschlossen": Spalte ergänzen, falls sie fehlt
|
||||
columns = {r["name"] for r in conn.execute("PRAGMA table_info(kanban_projects)")}
|
||||
@@ -327,6 +351,7 @@ def init() -> None:
|
||||
conn.executescript(SCHEMA)
|
||||
_migrate(conn)
|
||||
_migrate_travel(conn)
|
||||
_migrate_monitor_token(conn)
|
||||
_migrate_kanban_categories(conn)
|
||||
_migrate_kanban_completed(conn)
|
||||
_migrate_kanban(conn)
|
||||
|
||||
Reference in new issue
Block a user