Inhalt
  1. Voraussetzungen
  2. Prometheus-Konfiguration
  3. Grafana-Dashboard importieren
  4. Alarme konfigurieren
  5. Verifizierung
  6. Metrik-Referenz

Voraussetzungen

Stellen Sie sicher, dass die folgenden Komponenten verfügbar sind:

Prüfen Sie, ob der Metriken-Endpunkt funktioniert:

curl http://<reva-host>:3978/api/metrics

Sie sollten eine Ausgabe im Prometheus-Textformat mit Metriken sehen, die mit reva_ beginnen.

Für den Metriken-Endpunkt ist keine Authentifizierung erforderlich. Stellen Sie sicher, dass Ihre Prometheus-Instanz über das Netzwerk auf den Reva-Host (Port 3978) zugreifen kann.

Prometheus-Konfiguration

Kopieren oder mergen Sie config/prometheus/prometheus.yml in Ihre Prometheus-Konfiguration.

Das Standard-Target reva:3978 in static_configs setzt voraus, dass Prometheus im selben Docker-Netzwerk wie Reva läuft.

# prometheus.yml (Docker Compose)
scrape_configs:
  - job_name: "reva"
    metrics_path: "/api/metrics"
    scrape_interval: 30s
    static_configs:
      - targets: ["reva:3978"]

Ersetzen Sie static_configs durch kubernetes_sd_configs, um den Reva-Pod im Namespace reva automatisch zu erkennen.

# prometheus.yml (Kubernetes)
scrape_configs:
  - job_name: "reva"
    metrics_path: "/api/metrics"
    scrape_interval: 30s
    kubernetes_sd_configs:
      - role: pod
        namespaces:
          names: ["reva"]
    relabel_configs:
      - source_labels: [__meta_kubernetes_pod_label_app]
        regex: reva
        action: keep

Laden Sie Prometheus nach der Konfigurationsänderung neu:

docker compose exec prometheus kill -HUP 1
kubectl rollout restart deployment/prometheus -n monitoring

Prüfung: Navigieren Sie in der Prometheus-Oberfläche zu Status > Targets und stellen Sie sicher, dass das Target reva den Status UP anzeigt.

Grafana-Dashboard importieren

Reva liefert ein vorgefertigtes Grafana-Dashboard unter config/grafana/reva-dashboard.json mit. Importieren Sie es in vier Schritten:

  1. Öffnen Sie Grafana und navigieren Sie zu Dashboards > Import.
  2. Klicken Sie auf Upload JSON file und wählen Sie config/grafana/reva-dashboard.json.
  3. Wählen Sie im Import-Dialog Ihre Prometheus-Datenquelle aus dem Dropdown.
  4. Klicken Sie auf Import.

Dashboard-Panels

Das Dashboard „Reva — Release Virtual Assistant“ enthält sieben Panels in vier Reihen:

ReihePanels
Request PerformanceLatenz-Perzentile, Anfragerate, Fehlerrate
Agent & LLMAgent-Loop-Schritte, LLM-Inferenzzeit
MCP ToolsTool-Dauer nach Server (Tabelle)
Active Sessions & InfrastructureSitzungen, Nachrichtenanzahl, Speicher/DB/Redis

Das Dashboard aktualisiert sich alle 30 Sekunden automatisch. Einige Panels zeigen möglicherweise „No data“ an, bis Reva die erste Anfrage erhält.

Alarme konfigurieren

Kopieren Sie config/prometheus/alerts.yml in Ihr Prometheus-Regelverzeichnis (dasselbe Verzeichnis wie prometheus.yml oder wohin rule_files zeigt).

Alarmregeln

Folgende Alarme sind vordefiniert:

AlarmBedingungSchweregrad
RevaHighErrorRateFehlerrate > 10 % für 5 Min.critical
RevaMcpDisconnectedMCP-Reconnect-Zähler steigtwarning
RevaSlowLlmLLM-p95-Latenz > 60s für 5 Min.warning
RevaHighMemoryRSS > 2 GB für 10 Min.warning
RevaNoRequests0 Anfragen/Min. für 15 Min. während der Geschäftszeiteninfo

AlertManager-Routing

Um Alarmbenachrichtigungen zu erhalten, konfigurieren Sie AlertManager mit einem Empfänger. Beispiel für Slack:

# alertmanager.yml
route:
  receiver: "slack"
  routes:
    - match:
        severity: critical
      receiver: "slack"
      repeat_interval: 1h

receivers:
  - name: "slack"
    slack_configs:
      - api_url: "https://hooks.slack.com/services/..."
        channel: "#reva-alerts"
        title: '{{ .CommonAnnotations.summary }}'
        text: '{{ .CommonAnnotations.description }}'

Alarme können auch an Microsoft Teams, E-Mail oder PagerDuty weitergeleitet werden. Alle Empfängertypen finden Sie in der AlertManager-Dokumentation.

Verifizierung

Führen Sie nach Abschluss der Einrichtung diese vier Prüfungen durch, um sicherzustellen, dass alles funktioniert:

  1. Prometheus-Target: Navigieren Sie zu http://<prometheus>:9090/targets und prüfen Sie, ob reva den Status UP anzeigt.
  2. Direkte Abfrage: Führen Sie reva_uptime_seconds in der Prometheus-Abfrageoberfläche aus. Es sollte ein positiver Wert zurückgegeben werden.
  3. Grafana-Panels: Öffnen Sie das Reva-Dashboard. Alle Panels sollten Daten anzeigen (einige können Null sein, wenn noch kein Traffic stattgefunden hat).
  4. Alarmregeln: Navigieren Sie zu http://<prometheus>:9090/rules und prüfen Sie, ob die Regelgruppe reva.rules geladen ist.

Wenn alle vier Prüfungen bestanden sind, ist Ihr Monitoring-Stack vollständig einsatzbereit. Reva meldet ab sofort kontinuierlich Metriken und löst Alarme aus, wenn Schwellenwerte überschritten werden.

Metrik-Referenz

Gauges

MetrikBeschreibung
reva_uptime_secondsProzess-Laufzeit in Sekunden
reva_request_duration_p50_secondsAnfragedauer, 50. Perzentil
reva_request_duration_p95_secondsAnfragedauer, 95. Perzentil
reva_request_duration_p99_secondsAnfragedauer, 99. Perzentil
reva_requests_per_minuteEmpfangene Anfragen in den letzten 60 Sekunden
reva_agent_steps_p50Agent-Loop-Schritte pro Anfrage, 50. Perzentil
reva_agent_steps_p95Agent-Loop-Schritte pro Anfrage, 95. Perzentil
reva_agent_tool_calls_p50Tool-Aufrufe pro Anfrage, 50. Perzentil
reva_agent_tool_calls_p95Tool-Aufrufe pro Anfrage, 95. Perzentil
reva_llm_step_duration_p50_secondsLLM-Schritt-Dauer, 50. Perzentil
reva_llm_step_duration_p95_secondsLLM-Schritt-Dauer, 95. Perzentil
reva_llm_step_duration_p99_secondsLLM-Schritt-Dauer, 99. Perzentil
reva_mcp_tool_duration_p50_seconds{server="..."}MCP-Tool-Aufrufdauer p50, pro Server
reva_mcp_tool_duration_p95_seconds{server="..."}MCP-Tool-Aufrufdauer p95, pro Server
reva_webhook_events_per_hourWebhook-Ereignisse in der letzten Stunde
reva_active_sessionsAktuell aktive Gesprächssitzungen
reva_messages_last_24hVerarbeitete Nachrichten in den letzten 24 Stunden
reva_db_pool_checked_outAktuell belegte Datenbankverbindungen
reva_db_pool_sizeGesamtgröße des Datenbank-Verbindungspools
reva_process_memory_rss_bytesResident Set Size des Prozesses in Bytes
reva_redis_connectedRedis-Verbindungsstatus (1 = verbunden, 0 = getrennt)

Counter

MetrikLabelsBeschreibung
reva_requests_totalstatus (success, error)Empfangene Nachrichten gesamt
reva_agent_max_steps_aborts_totalAgent hat das Schritt-Limit erreicht
reva_llm_tokens_input_totalGeschätzte verbrauchte Eingabe-Tokens
reva_llm_tokens_output_totalGeschätzte generierte Ausgabe-Tokens
reva_mcp_reconnects_totalMCP-Server-Reconnect-Ereignisse
reva_webhook_events_totalsource (release, jira)Eingehende Webhook-Ereignisse nach Quelle
reva_notification_deliveries_totalstatus (success, failed)Benachrichtigungszustellversuche
reva_messages_by_language_totallang (de, en)Nachrichten nach erkannter Sprache
reva_router_classifications_totalrole (release, ...)Router-Intent-Klassifikationen nach Rolle

Alle Gauge-Metriken werden über ein gleitendes Fenster berechnet. Counter-Metriken steigen monoton und werden bei Prozessneustart auf Null zurückgesetzt. Verwenden Sie die Prometheus-Funktionen rate() oder increase() für Counter-basierte Abfragen.

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.