Files
proxmox/scripts/monitoring/setup-health-check-cron.sh

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