Condividi tramite


Rilevare ed esportare le metriche di integrità degli endpoint di gestione in Prometheus e Datadog

Questo articolo offre una panoramica della gestione delle metriche di integrità degli endpoint e illustra come usare l'API di esportazione delle metriche per esportare le metriche degli endpoint in Prometheus e Datadog.

Le metriche di integrità degli endpoint misurano l'infrastruttura e le metriche come la latenza, la frequenza delle richieste, la frequenza di errore, l'utilizzo della CPU, l'utilizzo della memoria e così via. In questo modo emerge qual è il comportamento dell'infrastruttura di gestione.

Requisiti

  • Accesso in lettura all'endpoint desiderato e al token di accesso personale che può essere generato in Impostazioni nell'interfaccia utente di Databricks Mosaic AI per accedere all'endpoint.

  • Un endpoint Model Serving esistente. È possibile convalidare questa operazione controllando l'integrità dell'endpoint con quanto segue:

    curl -n -X GET -H "Authorization: Bearer [PAT]" https://[DATABRICKS_HOST]/api/2.0/serving-endpoints/[ENDPOINT_NAME]
    
  • Convalidare l'API delle metriche di esportazione:

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

Definizioni delle metriche degli endpoint di gestione

Metrico Descrizione
Latenza (ms) Acquisisce i tempi di latenza di round trip mediani (P50) e del 99° percentile (P99) all'interno di Azure Databricks. Ciò non include latenze aggiuntive legate a Databricks come l'autenticazione e la limitazione della velocità
Tasso di richieste (al secondo) Misura il numero di richieste elaborate al secondo. Questo tasso viene calcolato sommando il numero di richieste nel giro di un minuto e dividendo quindi per 60 (il numero di secondi in un minuto).
Tasso di errori delle richieste (al secondo) Rileva il tasso di risposte di errore HTTP 4xx e 5xx al secondo. Analogamente al tasso di richieste, si calcola aggregando il numero totale di richieste non andate a buon fine nel giro di un minuto e dividendo per 60.
Uso della CPU (%) Mostra la percentuale di utilizzo medio della CPU in tutte le repliche del server. Nel contesto dell'infrastruttura di Databricks, una replica fa riferimento ai nodi della macchina virtuale. A seconda delle impostazioni di concorrenza configurate, Databricks crea più repliche per gestire il traffico dei modelli in modo efficiente.
Utilizzo memoria (%) Mostra la percentuale di utilizzo medio della memoria in tutte le repliche del server.
Concorrenza con provisioning La concorrenza con provisioning è il numero massimo di richieste parallele che il sistema può gestire. La concorrenza con provisioning regola dinamicamente entro i limiti minimi e massimi dell'intervallo di scalabilità orizzontale di calcolo, con variazioni in risposta al traffico in ingresso.
Utilizzo GPU (%) Rappresenta l'utilizzo medio della GPU, come segnalato dall'utilità di esportazione NVIDIA DCGM. Se il tipo di istanza ha più GPU, ognuna viene rilevata separatamente (ad esempio, gpu0, gpu1, ..., gpuN). L'utilizzo viene mediato in tutte le repliche del server e campionato una volta al minuto. Nota: Il campionamento poco frequente indica che questa metrica è più accurata in un carico costante.

Visualizzare questa metrica dall'interfaccia utente Di servizio nella scheda Metriche dell'endpoint di gestione.
Utilizzo della memoria GPU (%) Indica la percentuale media di memoria del buffer dei frame utilizzata in ogni GPU in base ai dati di esportazione NVIDIA DCGM. Analogamente all'utilizzo della GPU, questa metrica viene calcolata in media tra repliche e campionata ogni minuto. È più affidabile in condizioni di carico coerenti.

Visualizzare questa metrica dall'interfaccia utente Di servizio nella scheda Metriche dell'endpoint di gestione.

Integrazione di Prometheus

Nota

Indipendentemente dal tipo di distribuzione presente nell'ambiente di produzione, la configurazione di scorporo dovrebbe essere simile.

Il materiale sussidiario contenuto in questa sezione segue la documentazione di Prometheus per avviare un servizio Prometheus in locale usando Docker.

  1. Scrivere un file di configurazione yaml e denominarlo prometheus.yml. Di seguito è riportato un esempio:

     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. Avviare Prometheus a livello locale con il comando seguente:

       docker run \
       -p 9090:9090 \
       -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \
       prom/prometheus
    
  3. Passare a http://localhost:9090 per verificare se il servizio Prometheus locale è operativo.

  4. Controllare lo stato dello scorporo di Prometheus ed eseguire il debug degli errori da: http://localhost:9090/targets?search=

  5. Una volta che l'obiettivo è completamente operativo, è possibile eseguire query sulle metriche fornite, ad esempio cpu_usage_percentage o mem_usage_percentage, nell'interfaccia utente.

Integrazione di Datadog

Nota

Il set preliminare per questo esempio si basa sull'edizione gratuita.

Datadog ha un'ampia gamma di agenti che possono essere distribuiti in ambienti diversi. A scopo dimostrativo, il comando seguente avvia un agente Mac OS in locale che scorpora l'endpoint delle metriche nell'host Databricks. La configurazione per l'uso di altri agenti deve essere in un criterio simile.

  1. Registrare un account Datadog.

  2. Installare l'integrazione di OpenMetrics nel dashboard dell'account, in modo che Datadog possa accettare ed elaborare i dati OpenMetrics.

  3. Seguire la documentazione Datadog per attivare e mettere in esecuzione l'agente Datadog get. Per questo esempio, usare l'opzione pacchetto DMG per avere tutti gli elementi installati, inclusi launchctl e datadog-agent.

  4. Ricercare la configurazione di OpenMetrics. Per questo esempio, la configurazione è su ~/.datadog-agent/conf.d/openmetrics.d/conf.yaml.default. Di seguito viene illustrato un esempio del file di configurazione yaml:

    
     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. Avviare l'agente datadog usando launchctl start com.datadoghq.agent.

  6. Ogni volta che occorre apportare modifiche alla configurazione, è necessario riavviare l'agente per raccogliere la modifica.

     launchctl stop com.datadoghq.agent
     launchctl start com.datadoghq.agent
    
  7. Controllare l'integrità agente con datadog-agent health.

  8. Controllare lo stato dell'agente con datadog-agent status. Si dovrebbe vedere una risposta simile a quella seguente. In caso contrario, eseguire il debug con il messaggio di errore. I potenziali problemi possono essere dovuti a un token di accesso personale scaduto o a un URL non corretto.

     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. Lo stato dell'agente può essere visualizzato anche dall'interfaccia utente in: http://127.0.0.1:5002/.

    Se l'agente è completamente operativo, è possibile tornare al dashboard di Datadog per eseguire query sulle metriche. È anche possibile creare un monitoraggio o un avviso in base ai dati delle metriche: https://app.datadoghq.com/monitors/create/metric.