Polish: fleet-status.sh #90
Executable
+37
@@ -0,0 +1,37 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# fleet-status.sh — one-shot health snapshot of every clawstor
|
||||||
|
# node in the fleet. Run from a workstation with ssh access to
|
||||||
|
# all of them.
|
||||||
|
#
|
||||||
|
# Reports per node:
|
||||||
|
# * daemon service state
|
||||||
|
# * FUSE mount state + layer listing
|
||||||
|
# * each timer's next fire + last result
|
||||||
|
# * blob store byte count
|
||||||
|
#
|
||||||
|
# Configure via NODES env var (space-separated), default = the
|
||||||
|
# current LAN fleet.
|
||||||
|
|
||||||
|
set -uo pipefail
|
||||||
|
|
||||||
|
NODES=${NODES:-"tank architect morpheus"}
|
||||||
|
|
||||||
|
hr() { printf '%.0s─' {1..66}; echo; }
|
||||||
|
|
||||||
|
for host in $NODES; do
|
||||||
|
hr
|
||||||
|
echo "▎$host"
|
||||||
|
hr
|
||||||
|
ssh -o ConnectTimeout=5 -o BatchMode=yes "$host" '
|
||||||
|
printf "%-24s " "daemon:"; systemctl --user is-active clawstor-cluster.service 2>&1
|
||||||
|
printf "%-24s " "fuse mount:"; systemctl --user is-active clawstor-fuse.service 2>&1
|
||||||
|
printf "%-24s " "fuse layers:"; ls ~/clawstor-mount 2>/dev/null | tr "\n" " " ; echo
|
||||||
|
printf "%-24s " "blob store bytes:"; du -sb ~/clawstor-deploy/data 2>/dev/null | awk "{print \$1}"
|
||||||
|
for t in clawstor-scrub clawstor-gc clawstor-ref-sweep clawstor-snapshot-rotate; do
|
||||||
|
NEXT=$(systemctl --user list-timers "$t.timer" --no-pager 2>/dev/null | awk "NR==2 {print \$1, \$2, \$3, \$4}")
|
||||||
|
LAST=$(systemctl --user show "$t.service" --no-pager -p Result 2>/dev/null | cut -d= -f2)
|
||||||
|
printf "%-24s next=%-25s last=%s\n" "$t:" "${NEXT:--}" "${LAST:--}"
|
||||||
|
done
|
||||||
|
' 2>&1 || echo "unreachable"
|
||||||
|
done
|
||||||
|
hr
|
||||||
Reference in New Issue
Block a user