Condividi tramite


Monitorare ed esportare le metriche di salute degli endpoint di servizio 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 servizio

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) Monitora la frequenza delle risposte di errore HTTP 4xx e 5xx al secondo. Analogamente alla frequenza delle richieste, viene calcolata aggregando il numero totale di richieste non riuscite entro 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 provisionata La concorrenza fornita è 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'esportatore NVIDIA DCGM. Se il tipo di istanza ha più GPU, ognuna viene rilevata separatamente (ad esempio, gpu0, gpu1, ..., gpuN). L'utilizzo viene calcolato in media tra 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

Datadog ha un'ampia gamma di agenti che possono essere distribuiti in ambienti diversi.

A scopo dimostrativo, il comando seguente avvia localmente un agente Mac OS che estrae l'endpoint delle metriche dall'host Databricks. La configurazione per l'uso di altri agenti si trova in un modello simile.

Nota

La configurazione preliminare per questo esempio si basa sull'edizione gratuita.

Datadog offre anche un'integrazione di Azure Databricks che connette Datadog al modello che gestisce gli endpoint per monitorare le metriche degli endpoint senza codice. Vedere la documentazione di Datadog per informazioni su come connettere il modello di che gestisce la configurazione a Datadog.

  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. Segui la documentazione di Datadog per configurare l'agente Datadog. Per questo esempio, usare l'opzione pacchetto DMG per avere tutti gli elementi installati, inclusi launchctl e datadog-agent.

  4. Individua 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à dell'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.