grafana: re-organize
This commit is contained in:
44
services/grafana/disk-usage-collector.sh
Normal file
44
services/grafana/disk-usage-collector.sh
Normal file
@@ -0,0 +1,44 @@
|
||||
#!/usr/bin/env bash
|
||||
# Collects ZFS pool utilization and boot partition usage for Prometheus textfile collector
|
||||
set -euo pipefail
|
||||
|
||||
TEXTFILE="${TEXTFILE:?TEXTFILE env required}"
|
||||
TMP="${TEXTFILE}.$$"
|
||||
|
||||
{
|
||||
echo '# HELP zpool_size_bytes Total size of ZFS pool in bytes'
|
||||
echo '# TYPE zpool_size_bytes gauge'
|
||||
echo '# HELP zpool_used_bytes Used space in ZFS pool in bytes'
|
||||
echo '# TYPE zpool_used_bytes gauge'
|
||||
echo '# HELP zpool_free_bytes Free space in ZFS pool in bytes'
|
||||
echo '# TYPE zpool_free_bytes gauge'
|
||||
|
||||
# -Hp: scripting mode, parseable, bytes
|
||||
zpool list -Hp -o name,size,alloc,free | while IFS=$'\t' read -r name size alloc free; do
|
||||
echo "zpool_size_bytes{pool=\"${name}\"} ${size}"
|
||||
echo "zpool_used_bytes{pool=\"${name}\"} ${alloc}"
|
||||
echo "zpool_free_bytes{pool=\"${name}\"} ${free}"
|
||||
done
|
||||
|
||||
echo '# HELP partition_size_bytes Total size of partition in bytes'
|
||||
echo '# TYPE partition_size_bytes gauge'
|
||||
echo '# HELP partition_used_bytes Used space on partition in bytes'
|
||||
echo '# TYPE partition_used_bytes gauge'
|
||||
echo '# HELP partition_free_bytes Free space on partition in bytes'
|
||||
echo '# TYPE partition_free_bytes gauge'
|
||||
|
||||
# Boot drive partitions: /boot (ESP), /persistent, /nix
|
||||
# Use df with 1K blocks and convert to bytes
|
||||
for mount in /boot /persistent /nix; do
|
||||
if mountpoint -q "$mount" 2>/dev/null; then
|
||||
read -r size used avail _ <<< "$(df -k --output=size,used,avail "$mount" | tail -1)"
|
||||
size_b=$((size * 1024))
|
||||
used_b=$((used * 1024))
|
||||
avail_b=$((avail * 1024))
|
||||
echo "partition_size_bytes{mount=\"${mount}\"} ${size_b}"
|
||||
echo "partition_used_bytes{mount=\"${mount}\"} ${used_b}"
|
||||
echo "partition_free_bytes{mount=\"${mount}\"} ${avail_b}"
|
||||
fi
|
||||
done
|
||||
} > "$TMP"
|
||||
mv "$TMP" "$TEXTFILE"
|
||||
Reference in New Issue
Block a user