Inhalt
  1. Health Check
  2. Metriken & Monitoring
  3. Support-Bundle
  4. Datenbank-Backups
  5. Log-Verwaltung
  6. Updates & Rollback

Health Check

Der Health-Endpunkt prüft Datenbankverbindung, Teams-Adapter-Initialisierung und MCP-Server-Status. Docker- und Kubernetes-Healthchecks nutzen diesen Endpunkt — der Pod wird als ungesund markiert, wenn ein MCP-Server nicht verbunden ist.

curl -s http://localhost:3978/api/health | python3 -m json.tool
curl -s https://ihre-domain.example.com/api/health | python3 -m json.tool

Erwartete Antwort (alle Systeme betriebsbereit):

{
  "status": "ok",
  "adapter_initialized": true,
  "db": true,
  "mcp": {
    "release": { "connected": true, "tools": 38, "error": null },
    "jira": { "connected": true, "tools": 29, "error": null }
  }
}
FeldBedeutung
status"ok" (HTTP 200) oder "degraded" (HTTP 503)
adapter_initializedTeams-Bot-Framework-Adapter ist bereit
dbPostgreSQL-Verbindung erfolgreich
mcp.*.connectedMCP-Server ist verbunden und antwortet
mcp.*.toolsAnzahl registrierter Tools des MCP-Servers

Nach einem Deployment benötigen MCP-Sidecars 20–30 Sekunden zum Verbinden. Der Health Check gibt während dieser Startphase 503 zurück.

Metriken & Monitoring

Reva stellt Metriken in zwei Formaten bereit. Für Metriken-Endpunkte ist keine Authentifizierung erforderlich.

Prometheus-Format

GET /api/metrics    # text/plain; version=0.0.4

Diesen Endpunkt mit Prometheus, Grafana Agent oder einem kompatiblen Collector scrapen. Wichtige Metriken:

MetrikTypBeschreibung
reva_request_duration_p50_secondsGaugeNachrichtenverarbeitungszeit (p50)
reva_requests_totalCounterNachrichten gesamt nach Status (success/error)
reva_llm_step_duration_p50_secondsGaugeLLM-Inferenzzeit (p50)
reva_agent_max_steps_aborts_totalCounterAgent-Loops mit Iterationslimit
reva_mcp_tool_duration_p50_secondsGaugeMCP-Tool-Aufruf-Dauer nach Server
reva_active_sessionsGaugeAktive Gesprächssitzungen
reva_notification_deliveries_totalCounterProaktive Benachrichtigungszustellungen

JSON-Format

GET /api/stats      # application/json

Dieselben Daten als strukturiertes JSON — nützlich für Dashboards, Skripte oder Ad-hoc-Prüfungen.

Support-Bundle

Das Support-Bundle sammelt DSGVO-konforme Diagnosedaten für die Fernanalyse. Es ist für Kundeninstallationen konzipiert, bei denen X-idra keinen SSH-Zugang hat. Zwei Erfassungsmethoden stehen zur Verfügung: ein API-Endpunkt (wenn die Anwendung läuft) und ein Shell-Skript (wenn nicht).

Einrichtung

Setzen Sie ein Shared Secret, um den Support-Bundle-Endpunkt zu aktivieren:

In Ihrer .env-Datei ergänzen:

REVA_SUPPORT_SECRET=ihr-secret-hier

Dann neustarten:

docker compose up -d reva

ConfigMap aktualisieren:

kubectl patch configmap reva-env -n reva \
  --type merge -p '{"data":{"REVA_SUPPORT_SECRET":"ihr-secret-hier"}}'
kubectl rollout restart deployment/reva -n reva

API-Endpunkt (Anwendung läuft)

Diagnosedaten als JSON oder herunterladbares ZIP-Archiv abrufen:

# JSON-Antwort
curl -H "X-Support-Secret: $REVA_SUPPORT_SECRET" \
  https://ihre-domain.example.com/api/support-bundle

# ZIP-Archiv (eine Datei pro Abschnitt)
curl -H "X-Support-Secret: $REVA_SUPPORT_SECRET" \
  https://ihre-domain.example.com/api/support-bundle?format=zip \
  -o support-bundle.zip

Was wird erfasst?

Das Bundle führt 11 unabhängige Kollektoren aus. Wenn einer fehlschlägt, laufen die anderen weiter.

AbschnittErfasste Daten
system_infoBetriebssystem, Kernel, Architektur, Hostname, RAM, CPU, Festplatte, Python-Version, installierte Pakete
configReva- + Renfield-Einstellungen (Secrets maskiert), relevante Umgebungsvariablen
healthDatenbank, MCP-Server, Teams-Adapter, Ollama, Redis-Konnektivität
metricsVollständiger Metriken-Snapshot (Anfrageleistung, Agent-Loop, LLM, MCP, Webhooks)
mcp_statusMCP-Server-Konnektivität, Tool-Liste pro Server
router_stateAgent-Router-Rollen, Modelle, Beschreibungen, MCP-Zuordnungen
db_statsTabellen-Zeilenzählungen, aktive Verbindungen, Datenbankgröße, Connection-Pool-Statistiken
ollamaVerfügbare Modelle, laufende Modelle mit VRAM-Nutzung
networkDNS-Auflösung + TCP-Konnektivitätstests für alle konfigurierten Dienste
logsLetzte 500 Log-Zeilen + letzte 200 Fehler-/Warnungs-Zeilen (bereinigt)
error_summaryFehlerzahlen, Agent-Abbrüche, MCP-Fehler, Benachrichtigungsfehler

DSGVO-Bereinigung

Das Support-Bundle ist so konzipiert, dass es sicher über Organisationsgrenzen hinweg geteilt werden kann:

DatentypBehandlung
Passwörter, Tokens, API-SchlüsselErsetzt durch ***
Umgebungsvariablen mit PASSWORD, SECRET, TOKEN, KEY, APP_ID, TENANTWerte ersetzt durch ***
Benutzernamen in LogsErsetzt durch [REDACTED]
Sitzungs-/Konversations-IDs in LogsAuf 8 Zeichen gekürzt
Datenbankinhalte (Nachrichten, Erinnerungen)Werden nie abgefragt — nur pg_stat_user_tables-Zeilenzählungen

Authentifizierung: Der Endpunkt gibt 403 zurück, wenn REVA_SUPPORT_SECRET nicht konfiguriert ist, und 401, wenn der X-Support-Secret-Header nicht übereinstimmt. Ohne das korrekte Secret werden keine Diagnosedaten offengelegt.

Offline-Shell-Skript (Anwendung läuft nicht)

Wenn die Anwendung nicht starten kann oder die API nicht erreichbar ist, verwenden Sie das Shell-Skript. Es erkennt automatisch, ob Docker Compose oder Kubernetes verwendet wird.

# Ohne API-Zugang (erfasst Systeminfo, Logs, Container-Status, DB-Statistiken)
./bin/support-bundle.sh

# Mit API-Zugang (zieht zusätzlich das vollständige API-Bundle)
REVA_SUPPORT_SECRET=ihr-secret ./bin/support-bundle.sh

Das Skript erzeugt ein support-bundle-YYYY-MM-DD-HHMMSS.tar.gz-Archiv im Projektverzeichnis mit:

Senden Sie die resultierende .tar.gz- oder .zip-Datei zur Analyse an info@x-idra.de. Das Bundle enthält keine personenbezogenen Daten, Gesprächsinhalte oder Zugangsdaten.

Datenbank-Backups

# Manuelles Backup
./bin/backup-db.sh

# Automatisches tägliches Backup (Crontab hinzufügen)
0 2 * * * /pfad/zu/reva/bin/backup-db.sh

Backups werden als komprimierte SQL-Dumps unter backups/reva_YYYY-MM-DD_HHMMSS.sql.gz gespeichert, mit automatischer 30-Tage-Aufbewahrung.

# Automatisch: CronJob läuft täglich um 02:00 UTC
kubectl get cronjob db-backup -n reva

# Manuelles Backup
kubectl create job --from=cronjob/db-backup db-backup-manual -n reva

# Backup-Logs prüfen
kubectl logs -n reva job/db-backup-manual

Backups werden auf dem Persistent Volume gespeichert. Für Off-Cluster-Backup ein zusätzliches PVC einbinden oder S3-Upload im CronJob konfigurieren.

Backups verwenden den postgres-Superuser (nicht den eingeschränkten reva-App-Benutzer), um alle Schemas und Berechtigungen zu erfassen.

Log-Verwaltung

# Reva-Logs folgen
docker compose logs -f reva

# Nach Fehlern suchen
docker compose logs reva | grep -i "error\|warning\|critical"

Log-Rotation

Docker-Log-Rotation ist in docker-compose.yml vorkonfiguriert (json-file-Treiber):

ServiceMax. GrößeMax. DateienGesamt
reva50 MB5250 MB
postgres20 MB360 MB
redis10 MB330 MB
# Reva-Anwendung
kubectl logs -n reva -l app=reva -c reva -f

# MCP-Sidecars
kubectl logs -n reva -l app=reva -c release-mcp -f
kubectl logs -n reva -l app=reva -c jira-mcp -f

# Vorherige Pod-Logs (nach Absturz)
kubectl logs -n reva -l app=reva -c reva --previous

# Nach Fehlern suchen
kubectl logs -n reva -l app=reva -c reva | grep -i "error\|warning"

Kubernetes verwaltet Log-Rotation über die Container-Runtime. Für langfristige Log-Aufbewahrung einen Log-Aggregator (Loki, Elasticsearch usw.) konfigurieren.

Updates & Rollback

Update

# Version in .env aktualisieren
REVA_VERSION=1.0.5

# Neues Image laden und neustarten
docker compose pull reva
docker compose up -d reva

Rollback

# Auf vorherige Version zurücksetzen
REVA_VERSION=1.0.4
docker compose up -d reva

Update

# Neues Image bauen und importieren
docker build -t reva:latest .
docker save reva:latest | sudo k3s ctr images import -

# Deployment neustarten
kubectl rollout restart deployment/reva -n reva

# Rollout beobachten
kubectl rollout status deployment/reva -n reva

Rollback

# Auf vorherige Version zurücksetzen
kubectl rollout undo deployment/reva -n reva

# Rollout-Verlauf anzeigen
kubectl rollout history deployment/reva -n reva

Vor dem Update: Erstellen Sie immer zuerst ein Datenbank-Backup. Die Anwendung führt Datenbankmigrationen beim Start automatisch durch, und einige Migrationen sind möglicherweise nicht rückgängig zu machen.

Diese Website verwendet keine Cookies und keine Tracking-Technologien. Schriftarten werden lokal bereitgestellt; es werden keine Daten an Dritte übermittelt. Details finden Sie in unserer Datenschutzerklärung.