本文提供了服务终结点运行状况指标的概述,并演示如何使用指标导出 API 将终结点指标导出到 Prometheus 和 Datadog。
终结点运行状况指标度量基础结构和指标,例如延迟、请求速率、错误率、CPU 使用率、内存使用情况等。这说明服务基础结构的行为方式。
要求
对所需终结点具有读取访问权限,并拥有用于访问该终结点的个人访问令牌(PAT);该令牌可在 Azure Databricks UI 的 Settings 中生成。
现有的模型服务端点。 可以通过使用以下方法检查终结点运行状况来验证这一点:
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。