immich-docker/scripts/health-check.sh

86 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
# Immich Health Check Script
echo "========================================="
echo "Immich Health Check - $(date)"
echo "========================================="
echo ""
# Check Docker containers
echo "📦 Docker Containers:"
cd ~/immich
CONTAINERS=$(docker-compose ps --services)
ALL_UP=true
for service in $CONTAINERS; do
STATUS=$(docker-compose ps -q $service | xargs docker inspect -f '{{.State.Status}}')
if [ "$STATUS" = "running" ]; then
echo "$service: running"
else
echo "$service: $STATUS"
ALL_UP=false
fi
done
echo ""
# Check Immich API
echo "🌐 Immich API:"
API_RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:2283/api/server/ping 2>/dev/null)
if [ "$API_RESPONSE" = "200" ]; then
echo " ✓ API responding (HTTP $API_RESPONSE)"
else
echo " ✗ API not responding (HTTP $API_RESPONSE)"
ALL_UP=false
fi
echo ""
# Check disk space
echo "💾 Storage Usage:"
USAGE=$(df -h ~/immich | tail -1 | awk '{print $5}' | sed 's/%//')
AVAILABLE=$(df -h ~/immich | tail -1 | awk '{print $4}')
echo " Disk usage: ${USAGE}%"
echo " Available: $AVAILABLE"
if [ "$USAGE" -gt 85 ]; then
echo " ⚠️ Warning: Disk usage above 85%"
fi
echo ""
# Check library size
echo "📸 Library Statistics:"
UPLOAD_SIZE=$(du -sh ~/immich/library 2>/dev/null | cut -f1)
echo " Library size: $UPLOAD_SIZE"
PHOTO_COUNT=$(find ~/immich/library -type f 2>/dev/null | wc -l)
echo " File count: $PHOTO_COUNT"
echo ""
# Check latest backup
echo "💾 Latest Backup:"
LATEST_BACKUP=$(ls -t ~/immich/backups/immich-db-*.sql.gz 2>/dev/null | head -1)
if [ -n "$LATEST_BACKUP" ]; then
BACKUP_DATE=$(stat -c %y "$LATEST_BACKUP" | cut -d' ' -f1)
BACKUP_SIZE=$(du -h "$LATEST_BACKUP" | cut -f1)
echo " ✓ Latest backup: $(basename $LATEST_BACKUP)"
echo " Date: $BACKUP_DATE"
echo " Size: $BACKUP_SIZE"
# Check backup age
BACKUP_AGE=$((($(date +%s) - $(stat -c %Y "$LATEST_BACKUP")) / 86400))
if [ "$BACKUP_AGE" -gt 1 ]; then
echo " ⚠️ Warning: Backup is $BACKUP_AGE days old"
fi
else
echo " ✗ No backups found"
fi
echo ""
# Overall status
echo "========================================="
if [ "$ALL_UP" = true ]; then
echo "Status: ✓ All systems operational"
else
echo "Status: ✗ Issues detected - check above"
fi
echo "========================================="