监视联机终结点
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 门户中访问终结点或部署的指标页面。 另外,也可以在 Azure 门户中搜索终结点或部署的指标页面。
若要通过工作室中的链接访问指标页面,请执行以下操作:
转到 Azure 机器学习工作室。
在左侧导航栏中,选择“终结点”页。
单击终结点名称,以选择该终结点。
在终结点的“属性”部分选择“查看指标”,以在 Azure 门户中打开终结点的指标页面。
在每个可用部署的部分中选择“查看指标”,以在 Azure 门户中打开部署的指标页面。
若要直接从 Azure 门户访问指标:
登录 Azure 门户。
导航到联机终结点或部署资源。
联机终结点和部署都是 Azure 资源管理器 (ARM) 资源,转到其所属资源组即可找到这些资源。 查找资源类型“机器学习联机终结点”和“机器学习联机部署” 。
在左侧列中,选择“指标”。
可用度量值
你看到的指标因你选择的资源而异。 联机终结点和联机部署的指标范围各不相同。
终结点范围的指标
- 交通
指标 ID | 计价单位 | 说明 | 聚合方法 | 可拆分,由 | 指标警报示例 |
---|---|---|---|---|---|
RequestsPerMinute | 计数 | 在一分钟内发送到终结点的请求数 | 平均值 | Deployment、ModelStatusCode、StatusCode、StatusCodeClass | 在系统中有 <= 0 事务时向我发出警报 |
RequestLatency | 毫秒 | 响应请求所花费的完整时间间隔 | 平均值 | 部署 | 平均延迟 > 2 秒时向我发出警报 |
RequestLatency_P50 | 毫秒 | 60 秒内收集的所有请求延迟值聚合的第 50 百分位的请求延迟 | 平均值 | 部署 | 平均延迟 > 2 秒时向我发出警报 |
RequestLatency_P90 | 毫秒 | 60 秒内收集的所有请求延迟值聚合的第 90 百分位的请求延迟 | 平均值 | 部署 | 平均延迟 > 2 秒时向我发出警报 |
RequestLatency_P95 | 毫秒 | 60 秒内收集的所有请求延迟值聚合的第 95 百分位的请求延迟 | 平均值 | 部署 | 平均延迟 > 2 秒时向我发出警报 |
RequestLatency_P99 | 毫秒 | 60 秒内收集的所有请求延迟值聚合的第 99 百分位的请求延迟 | 平均值 | 部署 | 平均延迟 > 2 秒时向我发出警报 |
- Network
指标 ID | 计价单位 | 说明 | 聚合方法 | 可拆分,由 | 指标警报示例 |
---|---|---|---|---|---|
NetworkBytes | 每秒字节数 | 每秒为终结点处理的字节数 | 平均值 | - | - |
ConnectionsActive | 计数 | 从客户端建立的有效并发 TCP 连接总数 | 平均值 | - | - |
NewConnectionsPerSecond | 计数 | 每秒从客户端建立的新 TCP 连接平均数 | 平均值 | - | - |
- 模型数据集合
指标 ID | 计价单位 | 说明 | 聚合方法 | 可拆分,由 | 指标警报示例 |
---|---|---|---|---|---|
DataCollectionEventsPerMinute | 计数 | 每分钟处理的数据收集事件数 | 平均值 | 部署、类型 | - |
DataCollectionErrorsPerMinute | 计数 | 每分钟删除的数据收集事件数 | 平均值 | 部署、类型、原因 | - |
例如,可以沿部署维度进行拆分,比较终结点下不同部署的请求延迟。
带宽限制
如果超出托管联机终结点的配额限制,带宽将受到限制。 有关限制的详细信息,请参阅有关联机终结点限制的文章。 确定请求是否受到限制:
- 监视“网络字节数”指标
- 响应尾将包含
ms-azureml-bandwidth-request-delay-ms
和ms-azureml-bandwidth-response-delay-ms
字段。 字段的值是带宽限制的延迟(以毫秒为单位)。
有关详细信息,请参阅带宽限制问题。
部署范围的指标
- 饱和度
指标 ID | 计价单位 | 说明 | 聚合方法 | 可拆分,由 | 指标警报示例 |
---|---|---|---|---|---|
CpuUtilizationPercentage | 百分比 | 使用的 CPU 的百分比 | 最小值、最大值、平均值 | InstanceId | 当已用容量百分比 > 75% 时向我发出警报 |
CpuMemoryUtilizationPercentage | 百分比 | 使用的内存的百分比 | 最小值、最大值、平均值 | InstanceId | |
DiskUtilization | 百分比 | 使用了多少磁盘空间 | 最小值、最大值、平均值 | InstanceId、磁盘 | |
GpuUtilizationPercentage | 百分比 | 实例上 GPU 利用率百分比 - 按一分钟间隔报告利用率 | 最小值、最大值、平均值 | InstanceId | |
GpuMemoryUtilizationPercentage | 百分比 | 实例上 GPU 内存利用率百分比 - 按一分钟间隔报告利用率 | 最小值、最大值、平均值 | InstanceId | |
GpuEnergyJoules | 焦耳 | GPU 节点上 Joules 中的间隔能量 - 按一分钟间隔报告能量 | 最小值、最大值、平均值 | InstanceId |
- 可用性
指标 ID | 计价单位 | 说明 | 聚合方法 | 可拆分,由 | 指标警报示例 |
---|---|---|---|---|---|
DeploymentCapacity | 计数 | 部署中的实例数 | 最小值、最大值、平均值 | InstanceId、状态 | 当服务可用性百分比低于 100% 时向我发出警报 |
- 交通
指标 ID | 计价单位 | 说明 | 聚合方法 | 可拆分,由 | 指标警报示例 |
---|---|---|---|---|---|
RequestsPerMinute | 计数 | 在一分钟内发送到联机部署的请求数 | 平均值 | StatusCode | 在系统中有 <= 0 事务时向我发出警报 |
RequestLatency_P50 | 毫秒 | 按所选时间段内收集的所有请求延迟值聚合的平均 P50 请求延迟 | 平均值 | - | 平均延迟 > 2 秒时向我发出警报 |
RequestLatency_P90 | 毫秒 | 按所选时间段内收集的所有请求延迟值聚合的平均 P90 请求延迟 | 平均值 | - | 平均延迟 > 2 秒时向我发出警报 |
RequestLatency_P95 | 毫秒 | 按所选时间段内收集的所有请求延迟值聚合的平均 P95 请求延迟 | 平均值 | - | 平均延迟 > 2 秒时向我发出警报 |
RequestLatency_P99 | 毫秒 | 按所选时间段内收集的所有请求延迟值聚合的平均 P99 请求延迟 | 平均值 | - | 平均延迟 > 2 秒时向我发出警报 |
- 模型数据集合
指标 ID | 计价单位 | 说明 | 聚合方法 | 可拆分,由 | 指标警报示例 |
---|---|---|---|---|---|
DataCollectionEventsPerMinute | 计数 | 每分钟处理的数据收集事件数 | 平均值 | InstanceId、类型 | - |
DataCollectionErrorsPerMinute | 计数 | 每分钟删除的数据收集事件数 | 平均值 | InstanceId、类型、原因 | - |
例如,可以比较联机部署的不同实例之间的 CPU 和/或内存利用率。
创建仪表板和警报
Azure Monitor 允许基于指标创建仪表板和警报。
创建仪表板并可视化查询
可以在 Azure 门户中创建自定义仪表板并且可视化来自多个源的指标,包括联机终结点的指标。 有关创建仪表板和可视化查询的详细信息,请参阅使用日志数据的仪表板,以及使用应用数据的仪表板。
创建警报
还可以创建自定义警报,以接收有关联机终结点的重要状态更新的通知:
有关详细信息,请参阅创建 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 工作区中的步骤创建一个工作区。
在 Azure 门户中,转到包含终结点的资源组,然后选择该终结点。
从页面左侧的“监视”部分,选择“诊断设置”,然后选择“添加设置”。
选择要启用的日志类别,选择“发送到 Log Analytics 工作区”,然后选择要使用的 Log Analytics 工作区。 最后,输入诊断设置名称,然后选择“保存”。
重要
可能需要长达一小时才能启用与 Log Analytics 工作区的连接。 等待一个小时,然后继续执行后续步骤。
将评分请求提交到终结点。 此活动应会在日志中创建条目。
从联机终结点属性或 Log Analytics 工作区中,选择屏幕左侧的“日志”。
关闭自动打开的“查询”对话框,然后双击“AmlOnlineEndpointConsoleLog”。 如果未看到此项,请使用“搜索”字段。
选择“运行”。
查询示例
查看日志时,可以在“查询”选项卡上找到示例查询。 搜索“联机终结点”以查找示例查询。
日志列详细信息
下表提供有关每个日志中存储的数据的详细信息:
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 诊断和数据收集”。
相关内容
- 了解如何查看已部署的终结点的成本。
- 详细了解指标资源管理器。