52 lines
1.7 KiB
Bash
Executable File
52 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# Setup Health Check Cron Job
|
|
# Installs cron jobs to monitor Besu node health
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
|
|
if ! command -v pct >/dev/null 2>&1; then
|
|
echo "Error: pct command not found. This script must be run on Proxmox host."
|
|
exit 1
|
|
fi
|
|
|
|
LOG_DIR="$PROJECT_ROOT/logs/health-checks"
|
|
mkdir -p "$LOG_DIR"
|
|
|
|
# Create cron job script
|
|
cat > "$PROJECT_ROOT/scripts/monitoring/health-check-cron-wrapper.sh" << 'CRONSCRIPT'
|
|
#!/bin/bash
|
|
# Health check wrapper for cron
|
|
# Checks all Besu nodes and logs results
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
LOG_DIR="$PROJECT_ROOT/logs/health-checks"
|
|
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
|
|
|
|
for vmid in 1000 1001 1002 1003 1004 1500 1501 1502 1503 2500 2501 2502; do
|
|
if [[ -f "$PROJECT_ROOT/scripts/health/check-node-health.sh" ]]; then
|
|
"$PROJECT_ROOT/scripts/health/check-node-health.sh" "$vmid" >> "$LOG_DIR/health-$vmid-$TIMESTAMP.log" 2>&1
|
|
fi
|
|
done
|
|
|
|
# Cleanup old logs (keep 7 days)
|
|
find "$LOG_DIR" -name "health-*.log" -mtime +7 -delete 2>/dev/null || true
|
|
CRONSCRIPT
|
|
|
|
chmod +x "$PROJECT_ROOT/scripts/monitoring/health-check-cron-wrapper.sh"
|
|
|
|
# Add to crontab (every 5 minutes)
|
|
CRON_JOB="*/5 * * * * $PROJECT_ROOT/scripts/monitoring/health-check-cron-wrapper.sh"
|
|
|
|
if crontab -l 2>/dev/null | grep -q "health-check-cron-wrapper.sh"; then
|
|
echo "Cron job already exists"
|
|
else
|
|
(crontab -l 2>/dev/null; echo "$CRON_JOB") | crontab -
|
|
echo "✓ Health check cron job installed (runs every 5 minutes)"
|
|
echo " Logs: $LOG_DIR/"
|
|
echo " To remove: crontab -e (then delete the line)"
|
|
fi
|