Mercurial > code > home > repos > infra
changeset 118:69058ad170be
watch output from `zfs list -o space` as metrics
author | drewp@bigasterisk.com |
---|---|
date | Wed, 07 Dec 2022 23:02:57 -0800 |
parents | fb87591c985d |
children | 51a471fa4d29 |
files | files/zfs_metrics/zfs.mtail files/zfs_metrics/zfs_space_metrics.service files/zfs_metrics/zfs_space_metrics.sh package_lists.py system.py |
diffstat | 5 files changed, 50 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/files/zfs_metrics/zfs.mtail Wed Dec 07 23:02:57 2022 -0800 @@ -0,0 +1,16 @@ +gauge zfs_space_avail by name +gauge zfs_space_used by name +gauge zfs_space_used_snap by name +gauge zfs_space_used_ds by name +gauge zfs_space_used_ref_reserv by name +gauge zfs_space_used_child by name + +# output of `zfs list -Hp -o space` +/(?P<name>\S+)\s+(?P<f0>\d+)\s+(?P<f1>\d+)\s+(?P<f2>\d+)\s+(?P<f3>\d+)\s+(?P<f4>\d+)\s+(?P<f5>\d+)/ { + zfs_space_avail[$name] = $f0 + zfs_space_used[$name] = $f1 + zfs_space_used_snap[$name] = $f2 + zfs_space_used_ds[$name] = $f3 + zfs_space_used_ref_reserv[$name] = $f4 + zfs_space_used_child[$name] = $f5 +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/files/zfs_metrics/zfs_space_metrics.service Wed Dec 07 23:02:57 2022 -0800 @@ -0,0 +1,13 @@ +# written by pyinfra + +[Unit] +Description=zfs space metrics +After=zfs-mount.service + +[Service] +Type=simple + +ExecStart=zsh /opt/zfs_metrics/zfs_space_metrics.sh + +[Install] +WantedBy=multi-user.target
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/files/zfs_metrics/zfs_space_metrics.sh Wed Dec 07 23:02:57 2022 -0800 @@ -0,0 +1,12 @@ +#!/bin/zsh + +LOG=/tmp/zfs_space_metrics_pipe +rm -f ${LOG} +mkfifo ${LOG} + +while (true) { + zfs list -Hp -o space + sleep 1m +} > ${LOG} & + +mtail -logtostderr -progs /opt/zfs_metrics/ -port 9985 -logs ${LOG} \ No newline at end of file
--- a/package_lists.py Sat Nov 26 19:56:06 2022 -0800 +++ b/package_lists.py Wed Dec 07 23:02:57 2022 -0800 @@ -5,6 +5,7 @@ 'iproute2', # needed for wireguard 'iptables', 'mosquitto-clients', + 'mtail', 'rsync', 'udns-utils', 'vim-tiny',
--- a/system.py Sat Nov 26 19:56:06 2022 -0800 +++ b/system.py Wed Dec 07 23:02:57 2022 -0800 @@ -63,6 +63,13 @@ files.template(src="templates/webforward.service.j2", dest=f"/etc/systemd/system/web_forward_{port}.service", port=port) systemd.service(service=f'web_forward_{port}', enabled=True, restarted=True) +def zfs_metrics(): + files.put(src='files/zfs_metrics/zfs_space_metrics.sh', dest='/opt/zfs_metrics/zfs_space_metrics.sh') + files.put(src='files/zfs_metrics/zfs.mtail', dest='/opt/zfs_metrics/zfs.mtail') + files.put(src='files/zfs_metrics/zfs_space_metrics.service', + dest=f'/etc/systemd/system/zfs_space_metrics.service') + systemd.service(service=f'zfs_space_metrics', enabled=True, restarted=True, daemon_reload=True) + timezone() fstab() @@ -80,6 +87,7 @@ if host.name == 'bang': nfs_server() + zfs_metrics() if host.name == 'prime': smaller_journals() \ No newline at end of file