Поделиться через


Отслеживание и экспорт метрик работоспособности сервисного эндпоинта в Prometheus и Datadog

В этой статье представлен обзор метрик работоспособности конечных точек и показано, как использовать API экспорта метрик для экспорта метрик конечных точек в Prometheus и Datadog.

Метрики работоспособности конечных точек измеряют инфраструктуру и метрики, такие как задержка, скорость запросов, частота ошибок, использование ЦП, использование памяти и т. д. Это говорит о том, как работает инфраструктура обслуживания.

Требования

  • Доступ на чтение к нужной конечной точке и персональному токену доступа (PAT), который можно создать в настройках в пользовательском интерфейсе Databricks Mosaic AI для доступа к конечной точке.

  • Существующую конечную точку обслуживания модели. Это можно проверить, проверив работоспособность конечной точки следующим образом:

    curl -n -X GET -H "Authorization: Bearer [PAT]" https://[DATABRICKS_HOST]/api/2.0/serving-endpoints/[ENDPOINT_NAME]
    
  • Проверьте API экспорта метрик:

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

Обслуживание определений метрик конечных точек

Метрика Описание
Задержка (мс) Отслеживает медиану (P50) и 99-й процентиль (P99) времён задержки для полного цикла в Azure Databricks. Это не включает дополнительные задержки, связанные с Databricks, такие как проверка подлинности и ограничение скорости
Частота запросов (в секунду) Измеряет количество обработанных запросов в секунду. Эта скорость вычисляется путем суммирования количества запросов в течение минуты, а затем деления на 60 (количество секунд в минуту).
Частота ошибок запроса (в секунду) Отслеживает частоту ответов на ошибки HTTP 4xx и 5xx в секунду. Аналогично частоте запросов, она вычисляется путем агрегирования общего количества неудачных запросов в течение минуты и деления на 60.
Использование ЦП (%) Отображает средний процент использования ЦП во всех репликах сервера. В контексте инфраструктуры Databricks реплика означает узлы виртуальных машин. В зависимости от настроенных параметров параллелизма Databricks создает несколько реплик для эффективного управления трафиком модели.
Использование памяти (%) Отображает средний процент использования памяти во всех репликах сервера.
Предварительно подготовленная одновременная работа Зарезервированная конкурентность — это максимальное количество параллельных запросов, которые может обрабатывать система. Подготовленная параллельность динамически настраивается в пределах минимального и максимального пределов диапазона с точки зрения горизонтального масштабирования вычислений, изменяясь в ответ на входящий трафик.
Использование GPU (%) Представляет среднее использование GPU, как сообщает экспортер NVIDIA DCGM . Если тип экземпляра имеет несколько GPU, каждый из них отслеживается отдельно (например, gpu0, , gpu1..., gpuN). Средняя нагрузка распределяется по всем репликам сервера и измеряется раз в минуту. Примечание. Это редкая выборка означает, что эта метрика наиболее точна при постоянной нагрузке.
Просмотрите эту метрику из пользовательского интерфейса обслуживания на вкладке метрик конечной точки обслуживания.
Использование памяти GPU (%) Указывает средний процент используемой памяти буфера кадров на каждом GPU на основе данных экспортера NVIDIA DCGM. Как и при использовании GPU, эта метрика усредняется по репликам и замеряется каждую минуту. Он является наиболее надежным в условиях согласованной нагрузки.
Просмотрите эту метрику из пользовательского интерфейса обслуживания на вкладке метрик конечной точки обслуживания.

Интеграция Prometheus

Примечание.

Вне зависимости от того, какой тип развертывания используется в вашей рабочей среде, конфигурация считывания должна быть аналогичной.

Руководство в этом разделе следует документации Prometheus, чтобы запустить службу Prometheus локально с помощью docker.

  1. yaml Напишите файл конфигурации и назовите егоprometheus.yml. Ниже приведен пример:

    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. Запустите Prometheus локально с помощью следующей команды:

       docker run \
       -p 9090:9090 \
       -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \
       prom/prometheus
    
  3. Перейдите к http://localhost:9090, чтобы проверить, работает ли ваша локальная служба Prometheus.

  4. Проверьте статус скрейпера Prometheus и выявите ошибки отладки из: http://localhost:9090/targets?search=

  5. После полного запуска целевого объекта вы можете запросить предоставленные метрики в пользовательском интерфейсе, например, cpu_usage_percentage или mem_usage_percentage.

Интеграция Datadog

Datadog имеет различные агенты, которые могут быть развернуты в разных средах.

В целях демонстрации в следующем примере запускается агент Mac OS локально, который удаляет конечную точку метрик в узле Databricks. Конфигурация для использования других агентов имеет аналогичный шаблон.

Примечание.

Предварительная конфигурация для этого примера основана на бесплатной версии.

Datadog также предлагает интеграцию Azure Databricks, которая подключает Datadog к конечным точкам, обслуживающим модели, для мониторинга метрик конечных точек без кода. Информацию о подключении конфигурации обслуживания модели к Datadog см. в документации на сайте Datadog.

  1. Зарегистрируйте учетную запись Datadog.

  2. Установите интеграцию OpenMetrics на панели мониторинга учетной записи, чтобы Datadog может принимать и обрабатывать данные OpenMetrics.

  3. Следуйте документации по Datadog, чтобы установить и запустить ваш агент Datadog. В этом примере используйте параметр пакета DMG, чтобы установить все, включая launchctl и datadog-agent.

  4. Найдите конфигурацию OpenMetrics. В этом примере конфигурация находится в ~/.datadog-agent/conf.d/openmetrics.d/conf.yaml.default. Ниже приведен пример файла конфигурации 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. Запустите агент datadog с помощью launchctl start com.datadoghq.agent.

  6. Каждый раз, когда необходимо внести изменения в конфигурацию, необходимо перезапустить агент, чтобы забрать изменения.

     launchctl stop com.datadoghq.agent
     launchctl start com.datadoghq.agent
    
  7. Проверьте состояние агента с помощью datadog-agent health.

  8. Проверьте состояние агента с помощью datadog-agent status. Вы должны увидеть ответ, как показано ниже. В противном случае выполните отладку с сообщением об ошибке. Возможные проблемы могут возникнуть из-за истекающего маркера PAT или неправильного URL-адреса.

     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. Состояние агента также можно увидеть в пользовательском интерфейсе по адресу:http://127.0.0.1:5002/.

    Если ваш агент полностью работает, вы можете вернуться к доске Datadog, чтобы посмотреть метрики. Вы также можете создать монитор или оповещение на основе данных метрик:https://app.datadoghq.com/monitors/create/metric.