Files
b0esche_cloud/scripts/monitor.sh
Leon Bösche 294b28d1a8 Add docs, scripts, and update README
- Added docs/AUTH.md with authentication system documentation
- Added server scripts (auto-deploy, backup, monitor, webhook-server)
- Updated README with deployment info and project structure
- Added gitignore for backup archives
2026-01-13 19:28:16 +01:00

120 lines
3.4 KiB
Bash
Executable File

#!/bin/bash
# b0esche.cloud Monitoring Script
# Usage: ./monitor.sh
set -e
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
echo "=== b0esche.cloud Service Status ==="
echo
# Check critical services
services=("traefik" "go-backend" "go-postgres" "flutter-web" "nextcloud" "nextcloud-db" "collabora")
for service in "${services[@]}"; do
if docker ps --format "table {{.Names}}" | grep -q "^$service$"; then
echo -e "${GREEN}${NC} $service is running"
else
echo -e "${RED}${NC} $service is not running"
fi
done
echo
echo "=== Service Health Checks ==="
echo
# HTTP/HTTPS health checks
echo -n "Flutter Web (www.b0esche.cloud): "
if curl -s --max-time 5 https://www.b0esche.cloud | grep -q "b0esche_cloud"; then
echo -e "${GREEN}OK${NC}"
else
echo -e "${RED}FAILED${NC}"
fi
echo -n "Go Backend (go.b0esche.cloud): "
if curl -s --max-time 5 https://go.b0esche.cloud/health | grep -q "ok"; then
echo -e "${GREEN}OK${NC}"
else
echo -e "${RED}FAILED${NC}"
fi
echo -n "Nextcloud (storage.b0esche.cloud): "
if curl -s --max-time 5 -I https://storage.b0esche.cloud | grep -q "HTTP/2 200"; then
echo -e "${GREEN}OK${NC}"
else
echo -e "${RED}FAILED${NC}"
fi
echo -n "Collabora (of.b0esche.cloud): "
if curl -s --max-time 5 -I https://of.b0esche.cloud | grep -q "HTTP/2"; then
echo -e "${GREEN}OK${NC}"
else
echo -e "${YELLOW}DEGRADED${NC}"
fi
echo
echo "=== Resource Usage ==="
echo
# Show container resource usage
docker stats --no-stream --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}" | grep -E "(traefik|go-backend|flutter-web|nextcloud|collabora)"
echo
echo "=== Recent Error Logs ==="
echo
# Show recent error logs from each service
for service in traefik go-backend nextcloud collabora; do
errors=$(docker logs "$service" --since=1h 2>&1 | grep -i error | tail -3 | wc -l)
if [ "$errors" -gt 0 ]; then
echo -e "${YELLOW}$service:${NC} $errors errors in last hour"
docker logs "$service" --since=1h 2>&1 | grep -i error | tail -3 | sed 's/^/ /'
fi
done
echo
echo "=== SSL Certificate Status ==="
echo
# Check certificate expiry for main domains
domains=("www.b0esche.cloud" "go.b0esche.cloud" "storage.b0esche.cloud" "of.b0esche.cloud")
for domain in "${domains[@]}"; do
expiry=$(echo | openssl s_client -servername "$domain" -connect "$domain:443" 2>/dev/null | openssl x509 -noout -dates 2>/dev/null | grep notAfter | cut -d= -f2)
if [ -n "$expiry" ]; then
expiry_epoch=$(date -d "$expiry" +%s)
current_epoch=$(date +%s)
days_left=$(( (expiry_epoch - current_epoch) / 86400 ))
if [ "$days_left" -lt 7 ]; then
echo -e "${RED}$domain: ${NC}Expires in $days_left days"
elif [ "$days_left" -lt 30 ]; then
echo -e "${YELLOW}$domain: ${NC}Expires in $days_left days"
else
echo -e "${GREEN}$domain: ${NC}Expires in $days_left days"
fi
else
echo -e "${RED}$domain: ${NC}Certificate check failed"
fi
done
echo
echo "=== Disk Usage ==="
echo
# Show disk usage for critical directories
echo "PostgreSQL data:"
du -sh /opt/go/data/postgres 2>/dev/null || echo " Not accessible"
echo "Backup directory:"
du -sh /opt/backups 2>/dev/null || echo " Not found"
echo "Docker volumes:"
docker system df --format "table {{.Type}}\t{{.TotalCount}}\t{{.Size}}"
echo
echo "=== Monitoring Complete ==="