homelab-codex-ws/scripts/deploy/verify-agent-fleet.sh

45 lines
1.5 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
# verify-agent-fleet.sh - Check the status of stability agents across the fleet
REDIS_HOST="100.108.208.3"
REDIS_PORT="6379"
echo "--- Homelab Agent Fleet Status ---"
# Check if redis-cli is available
if ! command -v redis-cli &> /dev/null; then
echo "Error: redis-cli not found. Please install it or run this on a node with Redis access."
echo "Expected Redis: $REDIS_HOST:$REDIS_PORT"
exit 1
fi
NODES=$(redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" --raw KEYS 'homelab:nodes:*' | sed 's/homelab:nodes://')
if [[ -z "$NODES" ]]; then
echo "No nodes found in Redis."
exit 0
fi
printf "%-15s | %-10s | %-20s | %-10s\n" "NODE" "STATUS" "LAST HEARTBEAT" "DOCKER"
printf "%s\n" "--------------------------------------------------------------------------------"
for NODE in $NODES; do
DATA=$(redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" HGETALL "homelab:nodes:$NODE")
# Simple parser for HGETALL output (alternating key/value)
STATUS=$(echo "$DATA" | grep -A 1 "status" | tail -n 1)
HEARTBEAT=$(echo "$DATA" | grep -A 1 "timestamp" | tail -n 1)
CHECKS=$(echo "$DATA" | grep -A 1 "checks" | tail -n 1)
DOCKER_STATUS="unknown"
if [[ "$CHECKS" == *"docker"* ]]; then
DOCKER_STATUS=$(echo "$CHECKS" | jq -r '.docker.status' 2>/dev/null || echo "error")
fi
printf "%-15s | %-10s | %-20s | %-10s\n" "$NODE" "$STATUS" "$HEARTBEAT" "$DOCKER_STATUS"
done
echo ""
echo "Events (last 5):"
redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" XREVRANGE homelab:events + - COUNT 5