v0.342.0 (unreleased): the upload and CPU watch — an app that sends or burns far more than its own numbers explain is one operator-only alarm; the line learnt from the off-site push; qBittorrent's default upload limit (never over the household's)
gates / gates (push) Successful in 1m17s

internal/upwatch: exact per-container counters from the Docker Engine API, per-app judging (upload >= max(5 Mbit/s,
25% of the line) for 15 min; CPU >= max(150%, 50% x cores) for 30 min), explainers qBittorrent / Transmission / Plex,
app_unexplained_upload / app_unexplained_cpu + _cleared (hub 0.169.0). The off-site push is sampled once a second
for the line (a lower bound). qBittorrent limit = 50% of the line, the household's limit always wins. 20 red-proofs.
Spike + design: felhom.eu audits/SPIKE-upload-watch-2026-10-23.md, architecture/08 section 9. Not released.
This commit is contained in:
2026-10-23 21:26:09 +02:00
parent 277e99839d
commit a9c1997fbc
35 changed files with 2438 additions and 0 deletions
+10
View File
@@ -2782,6 +2782,16 @@
"poweroff.refused.other_guests": "Another system runs on this machine, so it cannot be turned off from here.",
"poweroff.refused.generic": "The machine cannot turn itself off safely right now. Try again in a few minutes.",
"event.app_repaired_after_crash": "%s: after the unexpected stop, %d damaged preview file(s), %d repaired, %d still broken; lost originals: %d",
"event.app_unexplained_upload": "%s: uploaded %.1f Mbit/s for %d minutes, but the app itself counted only %.1f Mbit/s. This can be the sign of a hacked app.",
"event.app_unexplained_upload_noapp": "%s: uploaded %.1f Mbit/s for %d minutes; the app gives no number to compare, and this is far more than usual. This can be the sign of a hacked app.",
"event.app_unexplained_upload_cleared": "%s: the unexplained upload stopped.",
"event.app_unexplained_cpu": "%s: %.0f%% CPU (counted on one core) for %d minutes, with no work that explains it. This can be the sign of a hacked app.",
"event.app_unexplained_cpu_cleared": "%s: the unexplained CPU use stopped.",
"upwatch.qb_limit_note": "qBittorrent uploads at most %s Mbit/s, so the family internet stays fast. You can change this in qBittorrent.",
"upwatch.line_at_least": "at least",
"upwatch.line_measured": "Mbit/s (measured from the nightly off-site backup)",
"upwatch.line_label": "Upload speed",
"upwatch.line_learning": "still being measured (from the nightly off-site backup)",
"event.app_repair_after_crash_skipped": "%s: the repair after the unexpected stop was skipped: %s",
"app_info.lost_files_title": "Photos lost in an unexpected stop",
"app_info.lost_files_text": "The machine stopped unexpectedly (for example in a power cut), and these files were lost. The machine started again at:",
+10
View File
@@ -2770,6 +2770,16 @@
"poweroff.refused.other_guests": "Ezen a gépen más rendszer is fut, ezért innen nem lehet kikapcsolni.",
"poweroff.refused.generic": "A gép most nem tudja biztonságosan kikapcsolni magát. Próbáld újra néhány perc múlva.",
"event.app_repaired_after_crash": "%s: a váratlan leállás után %d sérült előnézeti fájl, ebből %d javítva, %d maradt hibás; elveszett eredeti fájl: %d",
"event.app_unexplained_upload": "%s: %.1f Mbit/s feltöltés %d percen át, de az alkalmazás saját adata szerint csak %.1f Mbit/s. Ez feltört alkalmazás jele lehet.",
"event.app_unexplained_upload_noapp": "%s: %.1f Mbit/s feltöltés %d percen át; az alkalmazástól nincs összevethető adat, és ez sokkal több a szokásosnál. Ez feltört alkalmazás jele lehet.",
"event.app_unexplained_upload_cleared": "%s: a megmagyarázatlan feltöltés megszűnt.",
"event.app_unexplained_cpu": "%s: %.0f%% CPU (egy magra számolva) %d percen át, és nincs munka, ami ezt magyarázná. Ez feltört alkalmazás jele lehet.",
"event.app_unexplained_cpu_cleared": "%s: a megmagyarázatlan CPU-használat megszűnt.",
"upwatch.qb_limit_note": "A qBittorrent feltöltése legfeljebb %s Mbit/s, hogy a családi internet gyors maradjon. A qBittorrentben átállíthatod.",
"upwatch.line_at_least": "legalább",
"upwatch.line_measured": "Mbit/s (az éjszakai távoli mentésből mérve)",
"upwatch.line_label": "Feltöltési sebesség",
"upwatch.line_learning": "még mérjük (az éjszakai távoli mentésből)",
"event.app_repair_after_crash_skipped": "%s: a váratlan leállás utáni javítás elmaradt: %s",
"app_info.lost_files_title": "Elveszett fotók egy váratlan leállás miatt",
"app_info.lost_files_text": "A gép váratlanul leállt (például áramszünet miatt), és ezek a fájlok elvesztek. A gép újraindulásának ideje:",