Ga naar inhoud

Debugging: database, logs en status

Dagelijkse inspectie-commando's per tenant. Namespace = de kale tenant-naam. Voor incidenten zie EMERGENCY.md; voor de database-keuzes zelf zie DATABASE.md.

Database Operaties

MariaDB (in-cluster)

TENANT=canary
NS=$TENANT

# Database shell
kubectl exec -it -n $NS deploy/nextcloud-mariadb -- \
  mysql -u nextcloud -p nextcloud
# Password: zie secret mariadb-password

# Database backup
kubectl exec -n $NS deploy/nextcloud-mariadb -- \
  mysqldump -u nextcloud -p nextcloud > backup-$TENANT-$(date +%Y%m%d).sql

# Database restore
kubectl exec -i -n $NS deploy/nextcloud-mariadb -- \
  mysql -u nextcloud -p nextcloud < backup-$TENANT.sql

External PostgreSQL

TENANT=canary
DB_HOST=your-postgres-host
DB_NAME=nextcloud_$TENANT

# Database shell
psql -h $DB_HOST -U nextcloud_$TENANT -d $DB_NAME

# Database backup
pg_dump -h $DB_HOST -U nextcloud_$TENANT -d $DB_NAME > backup-$TENANT-$(date +%Y%m%d).sql

Logs en Debugging

Nextcloud logs

TENANT=canary
NS=$TENANT

# Realtime logs
kubectl logs -n $NS deploy/nextcloud -f

# Nextcloud specifieke logs
kubectl exec -n $NS deploy/nextcloud -- tail -f /var/www/html/data/nextcloud.log

Nextcloud status

kubectl exec -n $NS deploy/nextcloud -- php occ status
kubectl exec -n $NS deploy/nextcloud -- php occ check
kubectl exec -n $NS deploy/nextcloud -- php occ app:list

Database check

kubectl exec -n $NS deploy/nextcloud -- php occ db:add-missing-indices --dry-run
kubectl exec -n $NS deploy/nextcloud -- php occ db:add-missing-columns --dry-run

Maintenance mode

# Aanzetten
kubectl exec -n $NS deploy/nextcloud -- php occ maintenance:mode --on

# Uitzetten
kubectl exec -n $NS deploy/nextcloud -- php occ maintenance:mode --off

Handige One-liners

# Alle tenant namespaces
kubectl get ns -l app.kubernetes.io/part-of=nextcloud-platform

# Alle PVCs over alle tenants
kubectl get pvc -A -l app.kubernetes.io/name=nextcloud

# Resource usage per tenant
kubectl top pods -A -l app.kubernetes.io/name=nextcloud

# Alle Nextcloud applications in Argo CD
argocd app list -l app.kubernetes.io/part-of=nextcloud-platform

# Quick health check alle tenants
for ns in $(kubectl get ns -l app.kubernetes.io/part-of=nextcloud-platform -o name | cut -d/ -f2); do
  echo "=== $ns ==="
  kubectl exec -n $ns deploy/nextcloud -- php occ status 2>/dev/null | grep -E "installed|version|maintenance"
done