Partager via


Suivre et exporter les métriques d’intégrité de mise en service des points de terminaison vers Prometheus et Datadog

Cet article fournit une vue d’ensemble des métriques d’intégrité de mise en service des points de terminaison et montre comment utiliser l’API d’exportation des métriques pour exporter les métriques du point de terminaison vers Prometheus et Datadog.

Les métriques d’intégrité du point de terminaison mesurent l’infrastructure et les métriques telles que la latence, le taux de requête, le taux d’erreur, l’utilisation du processeur, l’utilisation de la mémoire, etc. Cela vous indique comment votre infrastructure de service se comporte.

Spécifications

  • Accès en lecture au point de terminaison souhaité et au jeton d’accès personnel (PAT) qui peuvent être générés dans Paramètres dans l’interface utilisateur Databricks Mosaic AI pour accéder au point de terminaison.

  • Un point de terminaison de mise en service de modèle existant. Vous pouvez le valider en vérifiant l’intégrité du point de terminaison avec les éléments suivants :

    curl -n -X GET -H "Authorization: Bearer [PAT]" https://[DATABRICKS_HOST]/api/2.0/serving-endpoints/[ENDPOINT_NAME]
    
  • Validez l’API d’exportation des métriques :

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

Définitions des métriques de mise en service du point de terminaison

Métrique Description
Latence (ms) Capture les temps de latence d’aller-retour médians (P50) et du 99e centile (P99) dans Azure Databricks. Cela n’inclut pas les latences supplémentaires liées à Databricks, comme l’authentification et la limitation du débit
Taux de requêtes (par seconde) Mesure le nombre de requêtes traitées chaque seconde. Ce taux est calculé en totalisant le nombre de requêtes par minute et en le divisant par 60 (le nombre de secondes en une minute).
Taux d’erreur des requêtes (par seconde) Suit le taux par seconde de réponses d’erreur HTTP 4xx et 5xx. Comme pour le taux de requêtes, il est calculé en agrégeant le nombre total de requêtes infructueuses par minute et en le divisant par 60.
Utilisation du processeur (%) Affiche le pourcentage moyen d’utilisation du processeur sur tous les réplicas du serveur. Dans le contexte d’une infrastructure Databricks, un réplica fait référence aux nœuds de la machine virtuelle. Selon vos paramètres configurés d’accès concurrentiel, Databricks crée de multiples réplicas pour gérer efficacement le trafic du modèle.
Utilisation de la mémoire (%) Affiche le pourcentage moyen d’utilisation de la mémoire sur tous les réplicas du serveur.
Accès concurrentiel provisionné L’accès concurrentiel approvisionnée correspond au nombre maximal de requêtes parallèles que le système peut gérer. L’accès concurrentiel provisionné s’ajuste dynamiquement dans les limites minimales et maximales de la plage de montée en charge du calcul qui varient en fonction du trafic entrant.
Utilisation du GPU (%) Représente l’utilisation moyenne du GPU, comme indiqué par l’exportateur NVIDIA DCGM. Si le type d’instance dispose de plusieurs GPU, chacun est suivi séparément (par exemple gpu0, gpu1, ..., gpuN). L’utilisation est moyenne sur tous les réplicas du serveur et échantillonnée chaque minute. Remarque : L’échantillonnage peu fréquent signifie que cette métrique est la plus précise sous une charge constante.

Affichez cette métrique à partir de l’interface utilisateur de service sous l’onglet Métriques de votre point de terminaison de service.
Utilisation de la mémoire GPU (%) Indique le pourcentage moyen utilisé de mémoire tampon de la trame sur chaque GPU, en fonction des données de l’exportateur NVIDIA DCGM. Comme avec l’utilisation du GPU, cette métrique est une moyenne entre les réplicas et elle est échantillonnée toutes les minutes. Il est le plus fiable dans des conditions de charge cohérentes.

Affichez cette métrique à partir de l’interface utilisateur de service sous l’onglet Métriques de votre point de terminaison de service.

Intégration de Prometheus

Remarque

Quel que soit le type de déploiement que vous avez dans votre environnement de production, la configuration de scraping doit être similaire.

Les instructions de cette section suivent la documentation Prometheus pour démarrer un service Prometheus localement à l’aide de Docker.

  1. Écrivez un fichier de configuration yaml et nommez-le prometheus.yml. Par exemple :

     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. Démarrez Prometheus localement avec la commande suivante :

       docker run \
       -p 9090:9090 \
       -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \
       prom/prometheus
    
  3. Accédez à http://localhost:9090 pour vérifier si votre service Prometheus local est opérationnel.

  4. Vérifiez l’état du scraper Prometheus et les erreurs de débogage à partir de : http://localhost:9090/targets?search=

  5. Une fois que la cible est entièrement opérationnelle, vous pouvez interroger les métriques fournies, comme cpu_usage_percentage ou mem_usage_percentage, dans l’interface utilisateur.

Intégration de Datadog

Remarque

La configuration préliminaire de cet exemple est basée sur l’édition gratuite.

Datadog a un large éventail d’agents qui peuvent être déployés dans différents environnements. À des fins de démonstration, le code suivant lance localement un agent Mac OS qui scrape le point de terminaison de métriques dans votre hôte Databricks. La configuration d’utilisation d’autres agents doit se trouver dans un modèle similaire.

  1. Inscrivez un compte Datadog.

  2. Installez l’intégration d’OpenMetrics dans votre tableau de bord de compte afin que Datadog puisse accepter et traiter les données OpenMetrics.

  3. Suivez la documentation Datadog pour démarrer avec votre agent Datadog. Pour cet exemple, utilisez l’option de package DMG pour que tout soit installé, y compris launchctl et datadog-agent.

  4. Recherchez votre configuration OpenMetrics. Pour cet exemple, la configuration se trouve dans ~/.datadog-agent/conf.d/openmetrics.d/conf.yaml.default. Voici un exemple de fichier yaml de configuration.

    
     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. Démarrez l’agent datadog à l’aide de launchctl start com.datadoghq.agent.

  6. Chaque fois que vous devez apporter des modifications à votre configuration, vous devez redémarrer l’agent pour récupérer la modification.

     launchctl stop com.datadoghq.agent
     launchctl start com.datadoghq.agent
    
  7. Vérifiez l’intégrité de l’agent avec datadog-agent health.

  8. Vérifiez l’état de l’agent avec datadog-agent status. Vous devriez être en mesure de voir une réponse semblable à ce qui suit. Si ce n’est pas le cas, déboguez-le avec le message d’erreur. Les problèmes potentiels peuvent être dus à un jeton PAT expiré ou à une URL incorrecte.

     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. L’état de l’agent est également visible à partir de l’interface utilisateur à l’adresse suivante :http://127.0.0.1:5002/.

    Si votre agent est entièrement opérationnel, vous pouvez revenir à votre tableau de bord Datadog pour interroger les métriques. Vous pouvez également créer un moniteur ou une alerte en fonction des données de métrique :https://app.datadoghq.com/monitors/create/metric.