监视联机终结点
本文内容
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 Insight 诊断和数据收集”。
- 了解如何查看已部署的终结点的成本。
- 详细了解指标资源管理器。