Give the Monitor tab the help panel the Scheduler already had
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
# Monitor
|
||||
|
||||
Everything this host is doing right now, plus each partner. Nothing on this tab changes the
|
||||
system except the container controls — the rest is observation.
|
||||
|
||||
Two poll rates, deliberately split: CPU, memory and network refresh every second; everything
|
||||
else every five. The slower payload is served from a cache the background writer refreshes once
|
||||
a minute, so polling faster could not make it newer — it only decides how soon the page notices.
|
||||
|
||||
**Cards you do not have do not appear.** No GPU, no UPS, no VMs, no partner — the card is absent
|
||||
rather than showing zeros. An empty card would be a permanent reminder of nothing.
|
||||
|
||||
---
|
||||
|
||||
## Reference — System, power, CPU, memory, network
|
||||
|
||||
| Card | What it tells you |
|
||||
|---|---|
|
||||
| System | Hostname, Unraid version, uptime, array state |
|
||||
| Power | UPS load, battery and runtime. Absent when no UPS is configured |
|
||||
| CPU | Per-core utilisation with a 2-minute history, plus package temperature |
|
||||
| Memory | Used / cached / free, broken out rather than a single percentage |
|
||||
| Network | Live rx/tx with a 2-minute history |
|
||||
|
||||
## Reference — Jobs, fallback, partner, containers
|
||||
|
||||
| Card | What it tells you |
|
||||
|---|---|
|
||||
| Scripts | What ran recently and how it exited. Click a row to open its log |
|
||||
| Fallback | `NORMAL`, `FALLBACK`, `NO_INTERNET` or `DARK` — which tier this host is in |
|
||||
| Partner | Each partner's uptime, load, memory and array state, over the mesh |
|
||||
| Containers & VMs | Grouped by folder. Start and stop from here; stopping asks first |
|
||||
|
||||
## Reference — Sync, GPUs, transcodes, streams
|
||||
|
||||
| Card | What it tells you |
|
||||
|---|---|
|
||||
| Rsync | Last run per share, duration and outcome |
|
||||
| GPU | Utilisation, VRAM and temperature, one card per GPU |
|
||||
| Transcode | Ramdisk usage, SSD fallback, and the sessions currently running |
|
||||
| Streams | What is playing now across Emby, Jellyfin and Plex |
|
||||
|
||||
## Reference — Health and storage
|
||||
|
||||
| Card | What it tells you |
|
||||
|---|---|
|
||||
| Watchdog | Roll-up across every watchdog. Healthy requires *every* strike set to be clear |
|
||||
| Parity | Last check, its result, and when the next one is due |
|
||||
| Pools | Each cache pool with its per-disk breakdown and live I/O |
|
||||
| Array | Every array disk, its temperature against the warning thresholds, and live I/O |
|
||||
|
||||
## Reference — AI
|
||||
|
||||
Present only on the AI host with `$AI_ENABLED` true. Absent everywhere else, on the same rule
|
||||
as the GPU and UPS cards.
|
||||
|
||||
| Card | What it tells you |
|
||||
|---|---|
|
||||
| AI | Model residency, context size, VRAM, index size and staleness, tokens used today |
|
||||
| Conversations | The last `$AI_CHAT_HISTORY_MAX` chats. Click to reopen, × to delete |
|
||||
| Assistant | Ask a question without leaving the dashboard |
|
||||
|
||||
---
|
||||
|
||||
## The AI card leads with offload, not with size
|
||||
|
||||
`GPU offload` is the number worth watching. At 100% the model is fully resident and answers at
|
||||
roughly 60 tokens per second on this hardware; with even a few layers pushed to CPU that falls
|
||||
to about a quarter of it. Nothing else in the WebGUI surfaces it, and a model that has quietly
|
||||
fallen back to partial offload is invisible until answers merely *feel* slow.
|
||||
|
||||
`Index` reports chunks and whether the index is stale. Stale means a tracked file is newer than
|
||||
the last build — the assistant will still answer confidently, out of code that has since changed.
|
||||
That is the one failure a grounded answer cannot reveal on its own, so it is stated rather than
|
||||
implied.
|
||||
|
||||
These figures come from the same one-minute collection the AI tab's banner uses, so the two
|
||||
cannot disagree about whether the model is loaded.
|
||||
|
||||
## The assistant here starts on General Chat
|
||||
|
||||
The AI tab starts on Varaverk Assistant, which answers only from this installation's
|
||||
documentation and cites its sources. This card starts on General Chat instead, because the jobs
|
||||
are different: the tab is where you go to interrogate the system, this is the box you type an
|
||||
idle question into while watching the dashboard.
|
||||
|
||||
Nothing is lost by starting loose. A question that is genuinely about this installation is handed
|
||||
to the strict profile automatically, and handed back if the documentation turns out not to cover
|
||||
it. Starting strict would refuse ordinary questions to guard against a mistake the server already
|
||||
prevents.
|
||||
|
||||
Switching profile with the buttons keeps what is on screen but stops sending earlier turns to the
|
||||
model. Carrying cited, retrieval-grounded answers into a mode with no retrieval makes the model
|
||||
keep referring to sources it can no longer see.
|
||||
|
||||
## Conversations are shared with the AI tab
|
||||
|
||||
The same store backs both. Start a thread here, finish it on the AI tab, or the reverse — it is
|
||||
one conversation, not two. Chats save themselves when a turn completes; there is no Save button,
|
||||
because a conversation worth keeping is not reliably one you knew was worth keeping while you
|
||||
were having it. The oldest drops off past `$AI_CHAT_HISTORY_MAX`.
|
||||
|
||||
Reopening a chat shows the turns as plain text. Sources, reasoning and timings describe one
|
||||
generation and are not stored — redrawing them beside a transcript you may continue under a
|
||||
different profile would be citing evidence for an answer that is no longer being made.
|
||||
|
||||
## What this tab will not do
|
||||
|
||||
It will not clear a watchdog strike, reset a counter, or start a parity check. Strike state
|
||||
belongs to the watchdog that owns it, and a page that cleared strikes would silently undo an
|
||||
escalation something was deliberately building toward.
|
||||
|
||||
Stopping a container asks first. Starting one does not — and either way the endpoint validates
|
||||
the request against real inventory, so a stale page cannot act on a container that no longer
|
||||
exists.
|
||||
Reference in New Issue
Block a user