diff --git a/Makefile b/Makefile index 191aa82..0ac2c97 100644 --- a/Makefile +++ b/Makefile @@ -257,7 +257,7 @@ screenshots: ## Render the dashboards to docs/images/ (stack must be up) @# running stack, so it must never be reachable from `make validate`, where @# it would either always skip or ask CI for a secret. @# - @# It starts the `capture` profile's renderer, shoots five PNGs and stops it + @# It starts the `capture` profile's renderer, shoots four PNGs and stops it @# again. Review every image before committing — docs/images/README.md says @# what to look for. ./scripts/capture-screenshots.sh $(STACK) diff --git a/README.md b/README.md index 5fbe32f..2432ce0 100644 --- a/README.md +++ b/README.md @@ -192,10 +192,27 @@ $ make help ... ``` - +## Dashboards + +Rendered from the running stack by `make screenshots`, over a 24-hour window. +Four of the five provisioned dashboards are here; `docs/images/README.md` +explains why the Logs dashboard is deliberately not among them. + +![Host Overview dashboard: CPU, memory, load, storage and network for every host +running an Alloy agent, with a table of firing host alerts across the +top.](docs/images/host-overview.png) + +![Docker Containers dashboard: per-container CPU, memory, network and filesystem +writes from cAdvisor, alongside restart counts, CPU throttling and a container +inventory.](docs/images/docker-containers.png) + +![Network & Firewall dashboard: pfSense pf state table and packet filter drops, +MokerLink switch interface throughput and link status, and HPE iLO chassis power +draw and hardware health.](docs/images/network-snmp.png) + +![UPS & Power dashboard: APC power source, output load, input and output voltage +and runtime, under a banner explaining that every battery figure is fabricated +because no battery pack is fitted.](docs/images/ups-power.png) ## What runs it diff --git a/docs/images/README.md b/docs/images/README.md index 165c28c..23805bf 100644 --- a/docs/images/README.md +++ b/docs/images/README.md @@ -2,31 +2,33 @@ Dashboard screenshots go here and are referenced from the root `README.md`. -They are deliberately absent rather than faked — a mocked-up dashboard image in -a monitoring repository is worse than none, because it cannot be checked against -the JSON that produced it. +Every one is a real render of the real stack. A mocked-up dashboard image in a +monitoring repository is worse than none, because it cannot be checked against +the JSON that produced it — so an image that cannot honestly be captured is left +out rather than illustrated. ## What is here now -Two of the four, not four. `network-snmp.png` and `ups-power.png` pass the -checklist at the bottom of this file. `host-overview.png` and -`docker-containers.png` do not yet, and are absent rather than committed with a -note apologising for them: +All four, captured in a single run on 2026-08-22 over a 24-hour window. One run +rather than four afternoons: a set shot at the same moment is comparable, and a +gap in one of them is visible against the others. -| File | Why it is not here | -| --- | --- | -| `host-overview.png` | A 14-hour hole, 02:00 to 16:00, where the agent was down. Half the panels are a flat line — the exact thing "The window matters" below warns about. | -| `docker-containers.png` | cAdvisor only started reporting correctly in [#62](https://github.com/Gerrrt/HomeLab/pull/62), so 22 of the 24 hours are empty. | +Which file holds which dashboard is in the table under "Capturing them" below, +because that pairing is defined in the capture script rather than here. -Both are a re-shoot, not a repair: run `make screenshots` again once the stack -has a clean day behind it. Tracked in -[#12](https://github.com/Gerrrt/HomeLab/issues/12). +Two things in them are real and should not be tidied away on the next capture. +`network-snmp.png` shows `IloBatteryCondition` firing on `shiva` — that is a +genuine hardware fault, tracked in +[#76](https://github.com/Gerrrt/HomeLab/issues/76), and a screenshot of a stack +with nothing wrong would be the less honest picture. `docker-containers.png` +carries a `renderer` series in two legends: that is the `capture` profile +container taking the screenshot, which exists only for the duration of a +capture, which is why the inventory below it lists six containers and not seven. -The Container inventory panel on the Docker dashboard used to publish the -absolute path of `compose.yaml` — and so a username — because it excluded -fields by name and cAdvisor kept adding new ones. It now filters to an -allowlist. That was caught by this checklist working, which is the argument for -having it. +The Container inventory panel used to publish the absolute path of +`compose.yaml` — and so a username — because it excluded fields by name and +cAdvisor kept adding new ones. It now filters to an allowlist. That was caught +by this checklist working, which is the argument for having it. ## Capturing them @@ -53,7 +55,9 @@ drift: Height is derived per dashboard from its own JSON, so adding a panel makes the screenshot taller instead of pushing the new panel out of frame. -Then uncomment the screenshot block in the root `README.md`. +Overwrite the existing files in place. The root `README.md` references them +by name, so a re-shoot needs no edit there — but it does need the checklist +at the bottom of this file running over it again before it is committed. ### The window matters diff --git a/docs/images/docker-containers.png b/docs/images/docker-containers.png new file mode 100644 index 0000000..8dcbb1d Binary files /dev/null and b/docs/images/docker-containers.png differ diff --git a/docs/images/host-overview.png b/docs/images/host-overview.png new file mode 100644 index 0000000..d2faa05 Binary files /dev/null and b/docs/images/host-overview.png differ diff --git a/docs/images/network-snmp.png b/docs/images/network-snmp.png index 2da7d93..1411298 100644 Binary files a/docs/images/network-snmp.png and b/docs/images/network-snmp.png differ diff --git a/docs/images/ups-power.png b/docs/images/ups-power.png index 8810573..0f22e36 100644 Binary files a/docs/images/ups-power.png and b/docs/images/ups-power.png differ