Supervisar y exportar métricas de estado del endpoint de servicio a Prometheus y Datadog

En este artículo se proporciona información general sobre cómo atender las métricas de estado del punto de conexión y se muestra cómo usar la API de exportación de métricas para exportar métricas de punto de conexión a Prometheus y Datadog.

Las métricas de estado del punto de conexión miden la infraestructura y las métricas, como la latencia, la tasa de solicitudes, la tasa de errores, el uso de CPU, el uso de memoria, etc. Esto le indica cómo se comporta la infraestructura de servicio.

Requisitos

  • Acceso de lectura al punto de conexión deseado y al token de acceso personal (PAT), que se puede generar desde Settings de la interfaz de usuario de Azure Databricks, para acceder al punto de conexión.

  • Un punto de conexión de servicio de modelos existente. Para validarlo, compruebe el estado del punto de conexión con lo siguiente:

    curl -n -X GET -H "Authorization: Bearer [PAT]" https://[DATABRICKS_HOST]/api/2.0/serving-endpoints/[ENDPOINT_NAME]
    
  • Valide la API de métricas de exportación:

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

Servicio de definiciones de métricas de punto de conexión

Métrica Descripción
Latencia (ms) Captura la mediana (P50) y el percentil 99 (P99) de los tiempos de latencia de ida y vuelta dentro de Azure Databricks. Esto no incluye latencias adicionales relacionadas con Databricks, como la autenticación y la limitación de velocidad.
Tasa de solicitudes (por segundo) Mide el número de solicitudes procesadas por segundo. Esta tasa se calcula sumando el número de solicitudes en un minuto y, a continuación, se divide en 60 (el número de segundos en un minuto).
Tasa de errores de solicitud (por segundo) Realiza un seguimiento de la tasa de respuestas de error HTTP 4xx y 5xx por segundo. De forma similar a la tasa de solicitudes, se calcula agregando el número total de solicitudes incorrectas en un minuto y dividiendo entre 60.
Uso de CPU (%) Muestra el porcentaje promedio de uso de CPU en todas las réplicas de servidor. En el contexto de la infraestructura de Databricks, una réplica hace referencia a los nodos de máquina virtual. Según la configuración de simultaneidad configurada, Databricks crea varias réplicas para administrar el tráfico del modelo de forma eficaz.
Uso de memoria (%) Muestra el porcentaje promedio de uso de memoria en todas las réplicas de servidor.
Concurrencia aprovisionada La simultaneidad aprovisionada es el número máximo de solicitudes paralelas que el sistema puede controlar. La concurrencia aprovisionada se ajusta dinámicamente dentro de los límites mínimo y máximo del rango de escalado horizontal de cómputo, y va variando en respuesta al tráfico de entrada.
Uso de GPU (%) Representa el promedio de uso de GPU, según lo notificado por el exportador de NVIDIA DCGM. Si el tipo de instancia tiene varias GPU, se realiza un seguimiento de cada uno por separado (por ejemplogpu0, gpu1, ..., gpuN). El uso se calcula en promedio en todas las réplicas de servidor y se muestrea una vez por minuto. Nota: El muestreo poco frecuente significa que esta métrica es más precisa bajo una carga constante.
Vea esta métrica en la interfaz de usuario del servicio en la pestaña Métricas del punto de conexión del servicio.
Uso de memoria de GPU (%) Indica el porcentaje medio de memoria del búfer de fotogramas utilizada en cada GPU según los datos del exportador NVIDIA DCGM. Al igual que con el uso de GPU, esta métrica se promedia entre réplicas y se muestrea cada minuto. Es más confiable en condiciones de carga coherentes.
Vea esta métrica en la interfaz de usuario del servicio en la pestaña Métricas del punto de conexión del servicio.

Integración de Prometheus

Nota:

Independientemente del tipo de implementación que tenga en el entorno de producción, la configuración de extracción debe ser similar.

Las instrucciones de esta sección siguen la documentación de Prometheus para iniciar un servicio de Prometheus localmente mediante Docker.

  1. Escriba un yaml archivo de configuración y asígnelo el nombre prometheus.yml. A continuación se muestra un ejemplo:

    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. Inicie Prometheus localmente con el siguiente comando:

       docker run \
       -p 9090:9090 \
       -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \
       prom/prometheus
    
  3. Vaya a http://localhost:9090 para comprobar si su servicio local de Prometheus está en funcionamiento.

  4. Compruebe el estado del recopilador de Prometheus y depure los errores desde: http://localhost:9090/targets?search=

  5. Una vez que el objetivo esté completamente operativo, puede consultar las métricas disponibles, como cpu_usage_percentage o mem_usage_percentage, en la interfaz.

Integración de Datadog

Datadog tiene una variedad de agentes que se pueden implementar en diferentes entornos.

Con fines de demostración, el siguiente comando inicia localmente un agente de macOS que consulta el endpoint de métricas de su host de Databricks. La configuración para usar otros agentes está en un patrón similar.

Nota:

La configuración preliminar de este ejemplo se basa en la edición gratuita.

Datadog también ofrece una integración de Azure Databricks que conecta Datadog a los puntos de conexión de servicio del modelo para supervisar las métricas del punto de conexión sin código. Consulte la documentación de Datadog para saber cómo conectar la configuración de servicio del modelo a Datadog.

  1. Registre una cuenta de Datadog.

  2. Instale la integración de OpenMetrics en el panel de la cuenta, por lo que Datadog puede aceptar y procesar datos de OpenMetrics.

  3. Siga la Documentación de Datadog para poner en ejecución el agente de Datadog. En este ejemplo, utilice la opción de paquete DMG para instalarlo todo, incluidos launchctl y datadog-agent.

  4. Busque la configuración de OpenMetrics. En este ejemplo, la configuración está en ~/.datadog-agent/conf.d/openmetrics.d/conf.yaml.default. A continuación se muestra un archivo yaml de configuración de ejemplo.

    
     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. Inicie el agente datadog mediante launchctl start com.datadoghq.agent.

  6. Cada vez que necesite realizar cambios en la configuración, debe reiniciar el agente para recoger el cambio.

     launchctl stop com.datadoghq.agent
     launchctl start com.datadoghq.agent
    
  7. Compruebe el estado del agente con datadog-agent health.

  8. Compruebe el estado del agente con datadog-agent status. Debería poder ver una respuesta como la siguiente. Si no es así, depure el problema usando el mensaje de error. Los posibles problemas pueden deberse a un token PAT expirado o a una dirección URL incorrecta.

     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. El estado del agente también se puede ver desde la interfaz de usuario en:http://127.0.0.1:5002/.

    Si tu agente está completamente operativo, puedes volver a tu panel de Datadog para consultar las métricas. También puede crear un monitor o una alerta en función de los datos de métricas:https://app.datadoghq.com/monitors/create/metric.