Freigeben über


Nachverfolgen und Exportieren von Endpunktintegritätsmetriken in Prometheus und Datadog

Dieser Artikel enthält eine Übersicht über die Bereitstellung von Endpunktintegritätsmetriken und zeigt, wie Sie die Metrikexport-API zum Exportieren von Endpunktmetriken in Prometheus und Datadog verwenden.

Endpunktintegritätsmetriken messen Infrastruktur und Metriken wie die Wartezeit, Anforderungsrate, Fehlerrate, CPU-Auslastung, Arbeitsspeicherauslastung usw. Anhand dieser Daten können Sie das Verhalten Ihrer Bereitstellungsinfrastruktur ermitteln.

Anforderungen

  • Lesezugriff auf den gewünschten Endpunkt und das persönliche Zugriffstoken (Personal Access Token, PAT), das in den Einstellungen auf der Benutzeroberfläche von Databricks Mosaik AI generiert werden kann, um auf den Endpunkt zuzugreifen.

  • Einen vorhandenen Endpunkt für die Modellbereitstellung. Das können sie überprüfen, indem Sie die Endpunktintegrität mit den folgenden Schritten überprüfen:

    curl -n -X GET -H "Authorization: Bearer [PAT]" https://[DATABRICKS_HOST]/api/2.0/serving-endpoints/[ENDPOINT_NAME]
    
  • Überprüfen der Exportmetrik-API:

    curl -n -X GET -H "Authorization: Bearer [PAT]" https://[DATABRICKS_HOST]/api/2.0/serving-endpoints/[ENDPOINT_NAME]/metrics
    

Bereitstellen von Endpunktmetrikendefinitionen

Metrik Beschreibung
Latenz (ms) Erfasst die Wechsel-Median-Latenzzeiten (P50) und 99. Perzentil (P99) innerhalb von Azure Databricks. Dies schließt keine zusätzlichen Databricks-bezogenen Latenzen wie Authentifizierung und Ratenlimitierung ein
Anforderungsrate (pro Sekunde) Misst die Anzahl der pro Sekunde verarbeiteten Anforderungen. Diese Rate wird berechnet, indem die Gesamtanzahl der Anforderungen innerhalb einer Minute berechnet und dann durch 60 dividiert wird (die Anzahl der Sekunden in einer Minute).
Anforderungsfehlerrate (pro Sekunde) Verfolgt die Rate von 4xx- und 5xx HTTP-Fehlerantworten pro Sekunde. Ähnlich wie bei der Anforderungsrate wird es berechnet, indem die Gesamtanzahl der nicht erfolgreichen Anforderungen innerhalb einer Minute aggregiert und durch 60 dividiert wird.
CPU-Auslastung (%) Zeigt den durchschnittlichen Prozentsatz der CPU-Auslastung für alle Serverreplikate an. Im Kontext der Databricks-Infrastruktur bezieht sich ein Replikat auf virtuelle Computerknoten. Je nach Ihren konfigurierten Parallelitätseinstellungen erstellt Databricks mehrere Replikate, um den Modelldatenverkehr effizient zu verwalten.
Speicherauslastung (%) Zeigt den durchschnittlichen Speicherauslastungsprozentsatz für alle Serverreplikate an.
Bereitgestellte Parallelität Bereitgestellte Parallelität ist die maximale Anzahl paralleler Anforderungen, die das System verarbeiten kann. Die bereitgestellte Parallelität passt sich dynamisch innerhalb der Mindest- und Höchstgrenzen des horizontalen Compute-Skalierungsbereichs an, der sich in Reaktion auf eingehenden Datenverkehr ändert.
GPU-Auslastung (%) Stellt die durchschnittliche GPU-Auslastung dar, wie vom NVIDIA DCGM -Exporter gemeldet. Wenn der Instanztyp über mehrere GPUs verfügt, wird jeder separat nachverfolgt (z. B. gpu0, gpu1, … gpuN). Die Auslastung wird für alle Serverreplikate gemittelt und es wird einmal pro Minute eine Stichprobe entnommen. Hinweis: Das seltene Sampling bedeutet, dass diese Metrik unter einer konstanten Last am genauesten ist.
GPU-Speicherauslastung (%) Gibt den durchschnittlichen Prozentsatz des verwendeten Frame-Pufferspeichers für jede GPU basierend auf NVIDIA DCGM-Exporterdaten an. Wie bei der GPU-Verwendung wird diese Metrik in Replikaten gemittelt und es wird jede Minute eine Stichprobe entnommen. Dies ist unter konsistenten Ladebedingungen am zuverlässigsten.

Prometheus-Integration

Hinweis

Unabhängig davon, über welchen Bereitstellungstyp Sie in Ihrer Produktionsumgebung verfügen, sollte die Scrapingkonfiguration ähnlich sein.

Der Leitfaden in diesem Abschnitt folgt der Prometheus-Dokumentation, um einen Prometheus-Dienst lokal mit Docker zu starten.

  1. Schreiben Sie eine yaml-Konfigurationsdatei namens prometheus.yml. Es folgt ein Beispiel:

     global:
      scrape_interval: 1m
      scrape_timeout: 10s
     scrape_configs:
      - job_name: "prometheus"
        metrics_path: "/api/2.0/serving-endpoints/[ENDPOINT_NAME]/metrics"
        scheme: "https"
        authorization:
         type: "Bearer"
         credentials: "[PAT_TOKEN]"
    
        static_configs:
         - targets: ["dbc-741cfa95-12d1.dev.databricks.com"]
    
  2. Starten Sie Prometheus lokal mit dem folgenden Befehl:

       docker run \
       -p 9090:9090 \
       -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \
       prom/prometheus
    
  3. Navigieren Sie zu http://localhost:9090, um zu überprüfen, ob Ihr lokaler Prometheus-Dienst aktiv ist.

  4. Überprüfen Sie den Status des Prometheus-Scrapers, und debuggen Sie die Fehler aus: http://localhost:9090/targets?search=.

  5. Sobald das Ziel vollständig ausgeführt wurde, können Sie die bereitgestellten Metriken wie cpu_usage_percentage oder mem_usage_percentage auf der Benutzeroberfläche abfragen.

Datadog-Integration

Hinweis

Die vorläufige Einrichtung für dieses Beispiel basiert auf der kostenlosen Edition.

Datadog verfügt über eine Vielzahl von Agents, die in verschiedenen Umgebungen bereitgestellt werden können. Zu Demonstrationszwecken wird der Mac OS-Agent, der den Metrikendpunkt in Ihrem Databricks-Host ausliest, lokal mit folgenden Schritten gestartet. Die Konfiguration für die Verwendung anderer Agents sollte dem hier beschriebenen Muster ähneln.

  1. Registrieren Sie ein Datadog-Konto.

  2. Installieren Sie die OpenMetrics-Integration in Ihrem Kontodashboard, damit Datadog OpenMetrics-Daten akzeptieren und verarbeiten kann.

  3. Richten Sie Ihren Datadog-Agent anhand der Datadog-Dokumentation ein. Verwenden Sie in diesem Beispiel die DMG-Paketoption, um alles einschließlich launchctl und datadog-agent zu installieren.

  4. Suchen Sie Ihre OpenMetrics-Konfiguration. In diesem Beispiel befindet sich die Konfiguration unter ~/.datadog-agent/conf.d/openmetrics.d/conf.yaml.default. Das folgende Beispiel stellt eine yaml-Konfigurationsdatei dar.

    
     instances:
      - openmetrics_endpoint: https://[DATABRICKS_HOST]/api/2.0/serving-endpoints/[ENDPOINT_NAME]/metrics
    
       metrics:
       - cpu_usage_percentage:
           name: cpu_usage_percentage
           type: gauge
       - mem_usage_percentage:
           name: mem_usage_percentage
           type: gauge
       - provisioned_concurrent_requests_total:
           name: provisioned_concurrent_requests_total
           type: gauge
       - request_4xx_count_total:
           name: request_4xx_count_total
           type: gauge
       - request_5xx_count_total:
           name: request_5xx_count_total
           type: gauge
       - request_count_total:
           name: request_count_total
           type: gauge
       - request_latency_ms:
           name: request_latency_ms
           type: histogram
    
       tag_by_endpoint: false
    
       send_distribution_buckets: true
    
       headers:
         Authorization: Bearer [PAT]
         Content-Type: application/openmetrics-text
    
  5. Starten Sie den Datadog-Agent mit dem Befehl launchctl start com.datadoghq.agent.

  6. Sie müssen den Agent jedes Mal neu starten, wenn Sie Änderungen an Ihrer Konfiguration vornehmen müssen, damit die Änderung übernommen werden.

     launchctl stop com.datadoghq.agent
     launchctl start com.datadoghq.agent
    
  7. Überprüfen Sie mit dem Befehl datadog-agent health die Integrität des Agents.

  8. Überprüfen Sie mit dem Befehl datadog-agent status den Status des Agents. Die Antwort sollte in etwa folgendermaßen aussehen. Sollte das nicht der Fall sein, debuggen Sie den Agent anhand der Fehlermeldung. Mögliche Probleme können auf ein abgelaufenes PAT-Token oder eine falsche URL zurückzuführen sein.

     openmetrics (2.2.2)
     -------------------
       Instance ID: openmetrics: xxxxxxxxxxxxxxxx [OK]
       Configuration Source: file:/opt/datadog-agent/etc/conf.d/openmetrics.d/conf.yaml.default
       Total Runs: 1
       Metric Samples: Last Run: 2, Total: 2
       Events: Last Run: 0, Total: 0
       Service Checks: Last Run: 1, Total: 1
       Average Execution Time : 274ms
       Last Execution Date : 2022-09-21 23:00:41 PDT / 2022-09-22 06:00:41 UTC (xxxxxxxx)
       Last Successful Execution Date : 2022-09-21 23:00:41 PDT / 2022-09-22 06:00:41 UTC (xxxxxxx)
    
  9. Der Agentstatus kann auch auf der Benutzeroberfläche unter http://127.0.0.1:5002/ angezeigt werden.

    Wenn Ihr Agent vollständig ausgeführt wird, können Sie zurück zum Datadog-Dashboard navigieren, um die Metriken abzufragen. Sie können auch einen Monitor oder eine Warnung basierend auf den Metrikdaten unter https://app.datadoghq.com/monitors/create/metric erstellen.