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
This commit is contained in:
120
scripts/monitor.sh
Executable file
120
scripts/monitor.sh
Executable file
@@ -0,0 +1,120 @@
|
||||
#!/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 ==="
|
||||
Reference in New Issue
Block a user