Compartir vía


Seguimiento y exportación de métricas de mantenimiento del punto de conexión 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 en Configuración en la interfaz de usuario de Databricks Mosaic AI para acceder al punto de conexión.

  • Un punto de conexión de servicio de modelo 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 sumando 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.
Simultaneidad aprovisionada La simultaneidad aprovisionada es el número máximo de solicitudes paralelas que el sistema puede controlar. La simultaneidad aprovisionada se ajusta dinámicamente dentro de los límites mínimo y máximo del intervalo de escalado horizontal de proceso, que varía en respuesta al tráfico entrante.
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.
Uso de memoria de GPU (%) Indica el porcentaje medio de memoria del búfer de fotogramas utilizado en cada GPU en función de los datos de exportadores de 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.

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 para http://localhost:9090 comprobar si el servicio local de Prometheus está en ejecución.

  4. Compruebe el estado del scraper de Prometheus y los errores de depuración de: http://localhost:9090/targets?search=

  5. Una vez que el destino esté totalmente en funcionamiento, puede consultar las métricas proporcionadas, como cpu_usage_percentage o mem_usage_percentage, en la interfaz de usuario.

Integración de Datadog

Nota:

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

Datadog tiene una variedad de agentes que se pueden implementar en diferentes entornos. Con fines de demostración, el siguiente inicia un agente de Mac OS localmente que extrae el punto de conexión de métricas en el host de Databricks. La configuración para usar otros agentes debe estar en un patrón similar.

  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, use la opción de paquete DMG para tener todo instalado incluido 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 con 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 el agente está totalmente en ejecución, puede volver al 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.