86 lines
2.4 KiB
Bash
Executable File
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 "========================================="
|