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.
Scrivere un file di configurazione
yaml
e denominarloprometheus.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"]
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
Passare a
http://localhost:9090
per verificare se il servizio Prometheus locale è operativo.Controllare lo stato dello scorporo di Prometheus ed eseguire il debug degli errori da:
http://localhost:9090/targets?search=
Una volta che l'obiettivo è completamente operativo, è possibile eseguire query sulle metriche fornite, ad esempio
cpu_usage_percentage
omem_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.
Registrare un account Datadog.
Installare l'integrazione di OpenMetrics nel dashboard dell'account, in modo che Datadog possa accettare ed elaborare i dati OpenMetrics.
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
edatadog-agent
.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 configurazioneyaml
: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
Avviare l'agente datadog usando
launchctl start com.datadoghq.agent
.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
Controllare l'integrità agente con
datadog-agent health
.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)
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.