跟踪并将服务终结点运行状况指标导出到 Prometheus 和 Datadog

本文提供了服务终结点运行状况指标的概述,并演示如何使用指标导出 API 将终结点指标导出到 PrometheusDatadog

终结点运行状况指标度量基础结构和指标,例如延迟、请求速率、错误率、CPU 使用率、内存使用情况等。这说明服务基础结构的行为方式。

要求

  • 读取对所需终结点和个人访问令牌 (PAT) 的访问权限,该令牌可在 Databricks Mosaic AI UI 中的“设置”中生成,以访问终结点。

  • 提供终结点的现有模型。 可以通过使用以下方法检查终结点运行状况来验证这一点:

    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
    

服务终结点指标定义

指标 说明
延迟(毫秒) 捕获 Azure Databricks 中往返延迟时间的中值 (P50) 和第 99 百分位数 (P99)。 这不包括其他与 Databricks 相关的延迟,例如身份验证和速率限制
请求速率(每秒) 度量每秒处理的请求数。 此速率的计算方法是:计算一分钟内的请求数总和,然后除以 60(一分钟内的秒数)。
请求错误率(每秒) 跟踪每秒 4xx 和 5xx HTTP 错误响应率。 与请求速率类似,它的计算方法是:计算一分钟内失败的请求总数,然后除以 60。
CPU 使用率 (%) 显示所有服务器副本的平均 CPU 使用率百分比。 在 Databricks 基础结构的上下文中,副本是指虚拟机节点。 取决于你配置的并发设置,Databricks 会创建多个副本,以高效管理模型流量。
内存使用率 (%) 显示所有服务器副本的平均内存使用率百分比。
预配的并发 预配的并发是系统可以处理的最大并行请求数。 预配的并发在计算横向扩展范围的最小和最大限制内动态调整,以响应传入流量。
GPU 使用率 (%) 表示平均 GPU 使用率,由 NVIDIA DCGM 导出程序报告。 如果实例类型具有多个 GPU,则会单独跟踪每个 GPU(例如 gpu0, gpu1, …, gpuN)。 在所有服务器副本中取平均使用率,每分钟采样一次。 注意:不频繁的采样意味着此指标在常量负载下最准确。
GPU 内存使用率 (%) 表示每个 GPU 上已用的帧缓冲区内存的平均百分比,基于 NVIDIA DCGM 导出程序数据。 与 GPU 使用率一样,此指标在副本间取平均值,且每分钟采样一次。 它在稳定的负载条件下最可靠。

Prometheus 集成

注意

无论生产环境中具有哪种类型的部署,擦除配置都应类似。

本部分中的指南遵循 Prometheus 文档,使用 docker 在本地启动 Prometheus 服务。

  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. 目标完全启动并运行后,可以在 UI 中查询提供的指标,例如 cpu_usage_percentagemem_usage_percentage

Datadog 集成

注意

本示例的初步设置基于免费版本。

Datadog 具有可在不同环境中部署的各种代理。 出于演示目的,下面在本地启动一个 Mac OS 代理,用于擦除 Databricks 主机中的指标终结点。 使用其他代理的配置应采用类似的模式。

  1. 注册 datadog 帐户。

  2. 帐户仪表板中安装 OpenMetrics 集成,以便 Datadog 可以接受和处理 OpenMetrics 数据。

  3. 按照 Datadog 文档启动并运行 Datadog 代理。 对于此示例,请使用 DMG 包选项安装所有内容,包括 launchctldatadog-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. 使用 launchctl start com.datadoghq.agent 启动 datadog 代理。

  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. 还可以从 UI 查看代理状态:http://127.0.0.1:5002/

    如果代理已完全启动并运行,则可以导航回 Datadog 仪表板以查询指标。 还可以根据指标数据创建监视器或警报:https://app.datadoghq.com/monitors/create/metric