监视联机终结点

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 门户中打开部署的指标页面。

    A screenshot showing how to access the metrics of an endpoint and deployment from the studio UI.

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

  1. 登录 Azure 门户

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

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

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

可用度量值

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

终结点范围的指标

  • 请求延迟
  • 请求延迟 P50(第 50 百分位的请求延迟)
  • 请求延迟 P90(第 90 百分位的请求延迟)
  • 请求延迟 P95(第 95 百分位的请求延迟)
  • 每分钟请求数
  • 每秒新连接数
  • 活动连接计数
  • 网络字节数

按以下维度拆分:

  • 部署
  • 状态代码
  • 状态代码类

例如,可以沿部署维度进行拆分,比较终结点下不同部署的请求延迟。

带宽限制

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

  • 监视“网络字节数”指标
  • 响应尾将包含 ms-azureml-bandwidth-request-delay-msms-azureml-bandwidth-response-delay-ms 字段。 字段的值是带宽限制的延迟(以毫秒为单位)。 有关详细信息,请参阅带宽限制问题

部署范围的指标

  • CPU 使用率百分比
  • 部署容量(所请求实例类型的实例数)
  • 磁盘利用率
  • GPU 内存利用率(仅适用于 GPU 实例)
  • GPU 利用率(仅适用于 GPU 实例)
  • 内存使用率百分比

按以下维度拆分:

  • 实例 ID

例如,可以比较联机部署的不同实例之间的 CPU 和/或内存利用率。

创建仪表板和警报

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

创建仪表板并可视化查询

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

创建警报

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

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

    Screenshot showing 'New alert rule' button surrounded by a red box.

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

    Screenshot showing 'Configure signal logic' button surrounded by a red box.

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

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

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

日志

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

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

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

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

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

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

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

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

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

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

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

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

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

如何启用/禁用日志

重要

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

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

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

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

    Screenshot of the diagnostic settings dialog.

    重要

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

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

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

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

    Screenshot showing the log queries.

  7. 选择“运行”。

    Screenshots of the results after running a query.

查询示例

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

Screenshot of the example queries.

日志列详细信息

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

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 诊断和数据收集”

A screenshot of monitoring endpoint-level metrics in the studio.