aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md17
1 files changed, 9 insertions, 8 deletions
diff --git a/README.md b/README.md
index 7bcea7f..9014e1b 100644
--- a/README.md
+++ b/README.md
@@ -17,8 +17,7 @@ What *has* been checked:
- every dashboard query executed against a real Prometheus fed fixture data
- `promtool` over the recording rules and the generated scrape config
-- `nix flake check`: both modules evaluate, and the committed dashboard JSON matches what
- the generators produce
+- `nix flake check`: both modules evaluate, and both dashboard generators run
- the collectors run against mock `smartctl`/`zpool`/`zfs`, and partially against real
hardware
@@ -225,21 +224,23 @@ modules/
dashboards.nix builds dashboard JSON into a provisionable form
packages.nix the two collectors as ordinary packages
collectors/*.py the collectors themselves; runnable by hand
-dashboards/gen_*.py dashboard generators
-dashboards/*.json generated, committed, checked
+dashboards/gen_*.py dashboard generators; the JSON is built, not committed
rules/smartctl.yml Prometheus recording rules
```
## Working on it
-Dashboard JSON is **generated** — edit `dashboards/gen_*.py`, never the JSON:
+The ZFS Pools and Drive Health dashboards are **generated at build time** from
+`dashboards/gen_*.py`; no JSON is committed, so there is nothing to keep in sync and no
+way to ship a stale dashboard. To see what a generator currently produces:
```sh
-python3 dashboards/gen_zfs.py > dashboards/zfs-pools.json
-python3 dashboards/gen_smart.py > dashboards/smart.json
+python3 dashboards/gen_zfs.py | less
+nix build .#nixosConfigurations.<host>.config.system.build.toplevel # or just deploy
```
-`nix flake check` fails if you forget.
+(Flakes copy only git-tracked files into the store, so "gitignore the JSON and read it
+from disk anyway" is not an option — it is generate, or commit.)
The collectors are plain scripts taking `--output PATH`, so you can see exactly what a
machine reports: