你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

监视联机终结点

Azure 机器学习使用与 Azure Monitor 的集成来跟踪和监视联机终结点的指标和日志。 可以在图表中查看指标、比较终结点和部署、固定到 Azure 门户仪表板、配置警报、从日志表中查询,以及向支持的目标推送日志。 还可以使用 Application Insights 分析用户容器中的事件。

  • 指标:可以向下钻取请求延迟、每分钟请求数、每秒新连接数和网络字节数等终结点级别指标,在部署级别或状态级别查看详细信息。 还可以将部署级别的指标(例如 CPU/GPU 利用率以及内存或磁盘利用率)向下钻取到实例级别。 Azure Monitor 支持在图表中跟踪这些指标并设置仪表板和警报以进行进一步分析。

  • 日志:可以将指标发送到 Log Analytics 工作区,你可以在其中使用 Kusto 查询语法查询日志。 还可以将指标发送到 Azure 存储帐户和/或事件中心以进行进一步处理。 此外,你还可以使用专用日志表来记录联机终结点相关事件、流量和控制台(容器)日志。 Kusto 查询允许连接多个表进行复杂的分析和联接。

  • Application Insights:特选环境包括与 Application Insights 的集成,可以在创建联机部署时启用或禁用此集成。 内置指标和日志将发送到 Application Insights,可以使用其内置功能或 Application Insights(例如实时指标、事务搜索、故障和性能)进行进一步分析。

本文介绍如何执行以下操作:

  • 选择合适的方法来查看和跟踪指标和日志
  • 查看联机终结点的指标
  • 创建指标仪表板
  • 创建指标警报
  • 查看联机终结点的日志
  • 使用 Application Insights 跟踪指标和日志

先决条件

指标

可以在 Azure 门户中查看在线终结点或部署的指标页面。 通过 Azure 机器学习工作室用户界面中的链接可以轻松访问这些指标页面(特别是在终结点页面的“详细信息”选项卡中)。 点击这些链接可在 Azure 门户中访问终结点或部署的指标页面。 另外,也可以在 Azure 门户中搜索终结点或部署的指标页面。

若要通过工作室中的链接访问指标页面,请执行以下操作:

  1. 转到 Azure 机器学习工作室

  2. 在左侧导航栏中,选择“终结点”页。

  3. 单击终结点名称,以选择该终结点。

  4. 在终结点的“属性”部分选择“查看指标”,以在 Azure 门户中打开终结点的指标页面。

  5. 在每个可用部署的部分中选择“查看指标”,以在 Azure 门户中打开部署的指标页面。

    显示如何从工作室 UI 访问终结点和部署指标的屏幕截图。

若要直接从 Azure 门户访问指标:

  1. 登录 Azure 门户

  2. 导航到联机终结点或部署资源。

    联机终结点和部署都是 Azure 资源管理器 (ARM) 资源,转到其所属资源组即可找到这些资源。 查找资源类型“机器学习联机终结点”和“机器学习联机部署” 。

  3. 在左侧列中,选择“指标”。

可用度量值

你看到的指标因你选择的资源而异。 联机终结点和联机部署的指标范围各不相同。

终结点范围的指标

类别:流量

指标 REST API 中的名称 Unit 聚合 维度 时间粒度 DS 导出
活动连接数

从客户端建立的有效并发 TCP 连接总数。
ConnectionsActive 计数 平均值 <无> PT1M
每分钟数据收集错误数

每分钟删除的数据收集事件数。
DataCollectionErrorsPerMinute 计数 最小值、最大值、平均值 deploymentreasontype PT1M
每分钟数据收集事件数

每分钟处理的数据收集事件数。
DataCollectionEventsPerMinute 计数 最小值、最大值、平均值 deploymenttype PT1M
网络字节数

每秒为终结点处理的字节数。
NetworkBytes 每秒字节数 平均值 <无> PT1M
每秒新连接数

每秒从客户端建立的新 TCP 连接平均数。
NewConnectionsPerSecond 每秒计数 平均值 <无> PT1M
请求延迟

响应请求所花费的平均完整时间间隔(以毫秒为单位)
RequestLatency 毫秒 平均值 deployment PT1M
P50 请求延迟

按所选时间段内收集的所有请求延迟值聚合的平均 P50 请求延迟
RequestLatency_P50 毫秒 平均值 deployment PT1M
P90 请求延迟

按所选时间段内收集的所有请求延迟值聚合的平均 P90 请求延迟
RequestLatency_P90 毫秒 平均值 deployment PT1M
P95 请求延迟

按所选时间段内收集的所有请求延迟值聚合的平均 P95 请求延迟
RequestLatency_P95 毫秒 平均值 deployment PT1M
P99 请求延迟

按所选时间段内收集的所有请求延迟值聚合的平均 P99 请求延迟
RequestLatency_P99 毫秒 平均值 deployment PT1M
每分钟请求数

在一分钟内发送到联机终结点的请求数
RequestsPerMinute 计数 平均值 deploymentstatusCodestatusCodeClassmodelStatusCode PT1M

带宽限制

如果超出托管联机终结点的配额限制,带宽将受到限制。 有关限制的详细信息,请参阅有关联机终结点限制的文章。 确定请求是否受到限制:

  • 监视“网络字节数”指标
  • 响应尾将包含 ms-azureml-bandwidth-request-delay-msms-azureml-bandwidth-response-delay-ms 字段。 字段的值是带宽限制的延迟(以毫秒为单位)。

有关详细信息,请参阅带宽限制问题

部署范围的指标

类别:资源

指标 REST API 中的名称 Unit 聚合 维度 时间粒度 DS 导出
CPU 内存利用率百分比

实例上的内存利用率百分比。 利用率每分钟报告一次。
CpuMemoryUtilizationPercentage 百分比 最小值、最大值、平均值 instanceId PT1M
CPU 利用率百分比

实例上的 CPU 利用率百分比。 利用率每分钟报告一次。
CpuUtilizationPercentage 百分比 最小值、最大值、平均值 instanceId PT1M
每分钟数据收集错误数

每分钟删除的数据收集事件数。
DataCollectionErrorsPerMinute 计数 最小值、最大值、平均值 instanceIdreasontype PT1M
每分钟数据收集事件数

每分钟处理的数据收集事件数。
DataCollectionEventsPerMinute 计数 最小值、最大值、平均值 instanceIdtype PT1M
部署容量

部署中的实例数。
DeploymentCapacity 计数 最小值、最大值、平均值 instanceIdState PT1M
磁盘利用率

实例上的磁盘利用率百分比。 利用率每分钟报告一次。
DiskUtilization 百分比 最小值、最大值、平均值 instanceIddisk PT1M
GPU 能量(焦耳)

GPU 节点上的间隔功耗(焦耳)。 功耗每分钟报告一次。
GpuEnergyJoules 计数 最小值、最大值、平均值 instanceId PT1M
GPU 内存利用率百分比

实例上的 GPU 内存利用率百分比。 利用率每分钟报告一次。
GpuMemoryUtilizationPercentage 百分比 最小值、最大值、平均值 instanceId PT1M
GPU 利用率百分比

实例上的 GPU 利用率百分比。 利用率每分钟报告一次。
GpuUtilizationPercentage 百分比 最小值、最大值、平均值 instanceId PT1M

类别:流量

指标 REST API 中的名称 Unit 聚合 维度 时间粒度 DS 导出
P50 请求延迟

按所选时间段内收集的所有请求延迟值聚合的平均 P50 请求延迟
RequestLatency_P50 毫秒 平均值 <无> PT1M
P90 请求延迟

按所选时间段内收集的所有请求延迟值聚合的平均 P90 请求延迟
RequestLatency_P90 毫秒 平均值 <无> PT1M
P95 请求延迟

按所选时间段内收集的所有请求延迟值聚合的平均 P95 请求延迟
RequestLatency_P95 毫秒 平均值 <无> PT1M
P99 请求延迟

按所选时间段内收集的所有请求延迟值聚合的平均 P99 请求延迟
RequestLatency_P99 毫秒 平均值 <无> PT1M
每分钟请求数

在一分钟内发送到联机部署的请求数
RequestsPerMinute 计数 平均值 envoy_response_code PT1M

创建仪表板和警报

Azure Monitor 允许基于指标创建仪表板和警报。

创建仪表板并可视化查询

可以在 Azure 门户中创建自定义仪表板并且可视化来自多个源的指标,包括联机终结点的指标。 有关创建仪表板和可视化查询的详细信息,请参阅使用日志数据的仪表板,以及使用应用数据的仪表板

创建警报

还可以创建自定义警报,以接收有关联机终结点的重要状态更新的通知:

  1. 在指标页的右上方,选择“新建警报规则”。

    显示由红框围绕的“新建警报规则”按钮的屏幕截图。

  2. 选择一个条件名称以指定在何时应触发警报。

    显示由红框围绕的“配置信号逻辑”按钮的屏幕截图。

  3. 选择“添加操作组”>“创建操作组”,以指定触发警报时应发生什么情况 。

  4. 选择“创建警报规则”完成警报创建。

有关详细信息,请参阅创建 Azure Monitor 警报规则

启用基于指标的自动缩放

可以使用 UI 或代码启用基于指标的部署自动缩放。 使用代码(CLI 或 SDK)时,可以使用可用指标表中列出的指标 ID 作为触发自动缩放的条件。 有关详细信息,请参阅自动缩放联机终结点

日志

可以为联机终结点启用三个日志:

  • AmlOnlineEndpointTrafficLog:如果要检查你的请求的信息,可以选择启用流量日志。 下面是一些案例:

    • 如果响应不是 200,请检查列“ResponseCodeReason”的值以查看发生的情况。 此外,可在联机终结点疑难解答文章的“HTTPS 状态代码”部分中查看原因。

    • 可以从“ModelStatusCode”和“ModelStatusReason”列中检查模型的响应代码和响应原因。

    • 需要检查请求的持续时间,例如总持续时间、请求/响应持续时间以及网络限制导致的延迟。 可以从日志中检查以了解延迟明细。

    • 如果需要检查最近请求数或失败的请求数, 也可以启用日志。

  • AmlOnlineEndpointConsoleLog:包含容器输出到控制台的日志。 下面是一些案例:

    • 如果容器无法启动,控制台日志可能会对调试很有用。

    • 监视容器行为并确保正确处理所有请求。

    • 在控制台日志中写入请求 ID。 在 Log Analytics 工作区中联接请求 ID、AmlOnlineEndpointConsoleLog 和 AmlOnlineEndpointTrafficLog 后,可以跟踪从联机终结点的网络入口点到容器的请求。

    • 还可以使用此日志进行性能分析,以确定模型处理每个请求所需的时间。

  • AmlOnlineEndpointEventLog:包含有关容器生命周期的事件信息。 目前提供有关以下事件类型的信息:

    名称 消息
    回退 回退重启失败的容器
    已拉取 计算机上已存在容器映像 “<映像名称>”
    正在终止 将重启容器推理服务器失败的运行情况探测
    创建 已创建容器映像提取器
    创建 已创建容器推理服务器
    创建 已创建容器模型装载
    LivenessProbeFailed 运行情况探测失败: <失败内容>
    ReadinessProbeFailed 就绪情况探测失败: <失败内容>
    Started 已启动容器映像提取器
    Started 已启动容器推理服务器
    Started 已启动容器模型装载
    正在终止 正在停止容器推理服务器
    正在终止 正在停止容器模型装载

如何启用/禁用日志

重要

日志记录使用 Azure Log Analytics。 如果当前没有 Log Analytics 工作区,可以使用在 Azure 门户中创建 Log Analytics 工作区中的步骤创建一个工作区。

  1. Azure 门户中,转到包含终结点的资源组,然后选择该终结点。

  2. 从页面左侧的“监视”部分,选择“诊断设置”,然后选择“添加设置”。

  3. 选择要启用的日志类别,选择“发送到 Log Analytics 工作区”,然后选择要使用的 Log Analytics 工作区。 最后,输入诊断设置名称,然后选择“保存”。

    诊断设置对话框的屏幕截图。

    重要

    可能需要长达一小时才能启用与 Log Analytics 工作区的连接。 等待一个小时,然后继续执行后续步骤。

  4. 将评分请求提交到终结点。 此活动应会在日志中创建条目。

  5. 从联机终结点属性或 Log Analytics 工作区中,选择屏幕左侧的“日志”。

  6. 关闭自动打开的“查询”对话框,然后双击“AmlOnlineEndpointConsoleLog”。 如果未看到此项,请使用“搜索”字段。

    显示日志查询的屏幕截图。

  7. 选择“运行”。

    运行查询后的结果的屏幕截图。

查询示例

查看日志时,可以在“查询”选项卡上找到示例查询。 搜索“联机终结点”以查找示例查询。

示例查询的屏幕截图。

日志列详细信息

下表提供有关每个日志中存储的数据的详细信息:

AmlOnlineEndpointTrafficLog

属性 说明
方法 从客户端请求的方法。
路径 从客户端请求的路径。
SubscriptionId 联机终结点的机器学习订阅 ID。
AzureMLWorkspaceId 联机终结点的机器学习工作区 ID。
AzureMLWorkspaceName 联机终结点的机器学习工作区名称。
EndpointName 联机终结点的名称。
DeploymentName 联机部署的名称。
协议 请求的协议。
ResponseCode 返回到客户端的最终响应代码。
ResponseCodeReason 返回到客户端的最终响应代码原因。
ModelStatusCode 模型的响应状态代码。
ModelStatusReason 模型的响应状态原因。
RequestPayloadSize 从客户端接收的总字节数。
ResponsePayloadSize 发回客户端的总字节数。
UserAgent 请求的用户代理标头(包括注释,但被截断为最多 70 个字符)。
XRequestId Azure 机器学习为内部跟踪生成的请求 ID。
XMSClientRequestId 客户端生成的跟踪 ID。
TotalDurationMs 从请求开始到向客户端发回最后一个响应字节之间的持续时间(以毫秒为单位)。 如果客户端断开连接,则度量请求开始到客户端断开连接之间的时间。
RequestDurationMs 从请求开始到从客户端接收请求的最后一个字节之间的持续时间(以毫秒为单位)。
ResponseDurationMs 从请求开始到从模型读取第一个响应字节之间的持续时间(以毫秒为单位)。
RequestThrottlingDelayMs 因网络限制而导致的请求数据传输延迟(以毫秒为单位)。
ResponseThrottlingDelayMs 因网络限制而导致的响应数据传输延迟(以毫秒为单位)。

AmlOnlineEndpointConsoleLog

属性 说明
TimeGenerated 生成日志的时间戳 (UTC)。
OperationName 与日志记录相关联的操作。
InstanceId 生成此日志记录的实例的 ID。
DeploymentName 与日志记录关联的部署的名称。
ContainerName 生成日志的容器的名称。
消息 日志内容。

AmlOnlineEndpointEventLog

属性 说明
TimeGenerated 生成日志的时间戳 (UTC)。
OperationName 与日志记录相关联的操作。
InstanceId 生成此日志记录的实例的 ID。
DeploymentName 与日志记录关联的部署的名称。
名称 事件的名称。
消息 事件内容。

使用 Application Insights

特选环境包括与 Application Insights 的集成,可以在创建联机部署时启用或禁用此集成。 内置指标和日志将发送到 Application Insights,可以使用其内置功能或 Application Insights(例如实时指标、事务搜索、故障和性能)进行进一步分析。

请参阅 Application Insights 概述,了解更多信息。

在工作室中,可以使用联机终结点页面上的“监视”选项卡查看托管联机终结点的高级别活动监视器图。 要使用监视选项卡,必须在创建终结点时选择“启用 Application Insight 诊断和数据收集”

在工作室中监视终结点级别指标的屏幕截图。