feat(zfs): add capacity metrics and Grafana dashboard
Deploy an hourly systemd timer that writes pool and dataset capacity to node_exporter's textfile collector, since --collector.zfs exposes only ARC/I-O/state. Add a provisioned 'ZFS - Pools & Datasets' dashboard with per-pool totals, per-dataset used/quota and daily growth panels.
This commit is contained in:
+25
-1
@@ -1,4 +1,4 @@
|
||||
# Disks
|
||||
# ZFS
|
||||
|
||||
Ansible community support for ZFS is limited to create filesystems, volumes and snapshots. There is no support for managing zpools, so here it is.
|
||||
|
||||
@@ -36,6 +36,30 @@ zfs_datasets:
|
||||
quota: 500G
|
||||
```
|
||||
|
||||
## Prometheus metrics
|
||||
|
||||
The role deploys an hourly systemd timer (`zfs-metrics.timer`) running
|
||||
`/usr/local/bin/zfs-metrics.sh`, which writes pool and dataset capacity to
|
||||
node_exporter's textfile collector directory (`zfs_metrics_dir`). The
|
||||
`node_exporter` role must be deployed on the host; the script exits silently
|
||||
otherwise.
|
||||
|
||||
| Metric | Labels | Description |
|
||||
| --- | --- | --- |
|
||||
| `zfs_pool_size_bytes` | `pool` | Total pool size |
|
||||
| `zfs_pool_alloc_bytes` | `pool` | Allocated bytes |
|
||||
| `zfs_pool_free_bytes` | `pool` | Free bytes |
|
||||
| `zfs_pool_capacity_percent` | `pool` | Used capacity |
|
||||
| `zfs_dataset_used_bytes` | `dataset` | Used bytes (incl. snapshots and children) |
|
||||
| `zfs_dataset_refer_bytes` | `dataset` | Own referenced bytes |
|
||||
| `zfs_dataset_quota_bytes` | `dataset` | Quota (0 = none) |
|
||||
|
||||
These feed the **ZFS - Pools & Datasets** Grafana dashboard. node_exporter's
|
||||
built-in `--collector.zfs` exposes ARC, I/O and pool state only, not capacity.
|
||||
|
||||
Tunables (`defaults/main.yml`): `zfs_metrics_enabled`, `zfs_metrics_dir`,
|
||||
`zfs_metrics_script_path`, `zfs_metrics_interval`.
|
||||
|
||||
## References
|
||||
|
||||
- https://docs.ansible.com/ansible/latest/collections/community/general/zfs_module.html
|
||||
|
||||
Reference in New Issue
Block a user