本文提供了服务终结点运行状况指标的概述,并演示如何使用指标导出 API 将终结点指标导出到 Prometheus 和 Datadog。
终结点运行状况指标度量基础结构和指标,例如延迟、请求速率、错误率、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)。 在所有服务器副本中取平均使用率,每分钟采样一次。 
              注意: 不频繁的采样意味着在恒定负载下,此指标最准确。在服务终端的“指标”选项卡上,通过 Serving UI 查看此指标。 | 
| GPU 内存使用率 (%) | 表示每个 GPU 上已用的帧缓冲区内存的平均百分比,基于 NVIDIA DCGM 导出程序数据。 与 GPU 使用率一样,此指标在副本间取平均值,且每分钟采样一次。 在一致的负载条件下,它最可靠。 在服务终端的“指标”选项卡上,通过 Serving UI 查看此指标。 | 
Prometheus 集成
注意
无论生产环境中具有哪种类型的部署,擦除配置都应类似。
本部分中的指南遵循 Prometheus 文档,使用 docker 在本地启动 Prometheus 服务。
- 编写 - 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']
- 使用以下命令在本地启动 Prometheus: - docker run \ -p 9090:9090 \ -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \ prom/prometheus
- 导航到 - http://localhost:9090,检查本地 Prometheus 服务是否已启动并运行。
- 检查 Prometheus 抓取程序状态并调试以下来源的错误: - http://localhost:9090/targets?search=
- 目标完全启动并运行后,可以在 UI 中查询提供的指标,例如 - cpu_usage_percentage或- mem_usage_percentage。
Datadog 集成
Datadog 具有可在不同环境中部署的各种代理。
出于演示目的,下面在本地启动一个 Mac OS 代理,用于擦除 Databricks 主机中的指标终结点。 使用其他代理的配置采用类似的模式。
注意
本示例的初步设置基于免费版本。
Datadog 还提供一个 Azure Databricks 集成,使 Datadog 能够连接到用于服务模型的终结点,从而无需编写代码即可监控终结点指标。 请参阅 Datadog 文档,了解如何将 模型服务配置 连接到 Datadog。
- 注册 Datadog 帐户。 
- 在帐户仪表板中安装 OpenMetrics 集成,以便 Datadog 可以接受和处理 OpenMetrics 数据。 
- 按照 Datadog 文档启动并运行 Datadog 代理。 对于此示例,请使用 DMG 包选项安装所有内容,包括 - launchctl和- datadog-agent。
- 找到 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
- 使用 - launchctl start com.datadoghq.agent启动 datadog 代理。
- 每次需要更改配置时,都需要重启代理来选取更改。 - launchctl stop com.datadoghq.agent launchctl start com.datadoghq.agent
- 使用 - datadog-agent health检查代理运行状况。
- 使用 - 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)
- 还可以从 UI 查看代理状态:http://127.0.0.1:5002/。 - 如果代理已完全启动并运行,则可以导航回 Datadog 仪表板以查询指标。 还可以根据指标数据创建监视器或警报:https://app.datadoghq.com/monitors/create/metric。