帮你快速理解、总结文档立即下载

推理监控与日志

最近更新时间:2026-09-11 18:24:33
我的收藏
模型服务运行后需要持续观测调用量、延迟、错误率与模型效果。DataBuddy 提供\\运行指标、实时日志、推理表\\三类能力,覆盖从在线问题排查到离线模型质量监控的全链路。

前提条件

已创建并运行模型服务。基础流程详见 部署在线推理服务(REST API)。
启用推理表前,需对目标 Catalog / Schema 拥有 Use CatalogUse SchemaCreate Table 权限。

查看运行指标

平台提供两处监控视图,分别位于服务与版本两级页面:
调用监控 (服务详情页 > 服务版本下的页签):按时间范围(近 1 小时、近 24 小时、近 7 天,或自定义起止时间)按调用方式(如 http)展示调用统计(次)。
指标
说明
接收请求数
服务收到的请求总数。
成功请求数
正常返回的请求数。
失败请求数
返回错误的请求数。
被限制请求数
触发请求限流被拒绝的请求数。
监控 (版本详情页 > 实例列表下的页签):按时间范围与 时间粒度 (全部 / 1 分钟等)、按实例查看流量信息。
类型
指标
说明
流量信息
网络流量(MBytes)
服务实例的网络数据传输下行(入口)流量。反映模型服务的通信负载,突发流量可能预示请求量激增或异常调用,可结合 QPS 一起分析。
流量信息
QPS(次 / 秒)
每秒处理的请求数(Query Per Second),衡量服务吞吐量的核心指标。
流量信息
QPS 限流(次 / 秒)
主动限制每秒最大请求数的机制,超过阈值的请求会被拒绝。
流量信息
并发请求数
同一时刻正在处理的请求数量(包括等待和计算中的请求)。
资源信息
CPU 使用率(%)
服务实例的 CPU 资源占用百分比。
资源信息
MEM 使用率(%)
服务实例的内存占用百分比。
资源信息
显存使用率(%)
服务实例的 GPU 显存使用占用百分比。
资源信息
GPU 使用率(%)
服务实例的 GPU 计算单元负载百分比。
实例信息
实例数量
当前配置的服务实例总数(包括启动中、运行中、异常等所有状态)。
实例信息
运行中实例数量
实际正常处理请求的实例数。

查看实例日志

服务创建时如已开启 服务日志投递 (日志服务),即可在 版本详情页 > 实例列表 > 日志 页签查看实例日志。
1. 选择 实例名称时间范围 (如近 24 小时,或自定义起止时间)。
2. 可开启 自动刷新 持续拉取最新日志,开启 日志换行 优化长日志展示。
3. 在搜索框按 完整单词 检索关键字(如错误码、Trace ID)。
实例日志主要用于排查系统级问题(连接超时、模型加载失败、内存溢出)。如需基于请求、响应做特征偏移、效果监控等深度分析,请使用推理表能力。
提示
日志服务默认存储 15 天,长期分析建议同时启用推理表,将明细持久化到 Catalog。

通过 SDK 查询实例日志与重启实例

除控制台外,也可通过 MLflow Deployments SDK 在 Notebook / Python 任务中按时间区间分页拉取实例日志、重启异常实例(SDK 接入方式详见 部署在线推理服务)。
按时间区间分页拉取实例日志:
import datetime as dt

end = dt.datetime.now(dt.timezone(dt.timedelta(hours=8)))
start = end - dt.timedelta(hours=1)

ctx = None
while True:
resp = client.get_pod_logs(
service_id=service_id,
pod_name=f"{service_id}-*", # 支持通配符匹配该服务下的实例
limit=200, # 单次条数建议 ≤ 500
start_time=start.isoformat(), # ISO 8601,务必带时区(如 +08:00)
end_time=end.isoformat(),
context=ctx, # 翻页上下文,来自上次响应
)
for entry in resp["logs"]:
print(entry.get("timestamp"), entry.get("pod_name"), entry.get("message"))
ctx = resp["context"]
if not ctx: # 空字符串表示已到末页
break
重启(重建)指定实例,用于应对内存溢出、健康检查持续失败等异常:
resp = client.restart_pod(service_id=service_id, pod_name="ms-xxxxxx-1abc-xxxx")
print(resp["request_id"])
注意
日志启用前提:服务创建时已开启日志投递(log_enable=True);否则 get_pod_logs 返回为空。
时间参数必须是 ISO 8601 含时区 (如 +08:00),直接用本地无时区时间易因时区错位漏取日志。
restart_pod 不支持通配符 ,必须传具体实例名,可从 get_pod_logs 返回的 pod_name 字段获取。

查看服务事件

进入 版本详情页 > 实例列表 > 事件 页签,可查看实例底层资源的运行事件,用于排查副本拉起失败、健康检查异常等问题。事件列表字段:
字段
说明
首次出现时间 / 最后出现时间
该事件首次与最近一次发生的时间。
级别
Normal(正常)或 Warning(告警)。
资源类型
触发事件的底层资源类型,可按类型筛选,包括 Pod、Deployment、ReplicaSet、Service、Ingress、Endpoints、HorizontalPodAutoscaler、DistDeployment、PyTorchJob 等。
资源名称
触发事件的具体资源名称(如实例名 ms-xxxxxx-1-xxxx)。
详细描述
事件详情,如 Readiness probe failedpod group is ready 等。
出现次数
该事件累计发生的次数。
可开启 自动刷新 持续拉取最新事件。
提示
事件仅保留最近 15 天内的记录,请尽快查阅。
事件用于排查\\突然变化\\类问题(副本异常退出、健康检查持续失败、扩缩容未生效等),是定位实例级故障的首选入口。

服务日志投递及推理表收集

支持将推理服务日志投递至指定的 CLS 中,并且支持开启推理表(Inference Table)收集,将服务的请求 payload 与响应 payload 实时写入 Catalog 中的 Delta 表,作为后续质量监控的事实数据。

在新建服务时启用

在新建服务的 高级配置 > 服务日志投递 处打开开关后,配置 CLS 投递:
参数
说明
是否必填
默认值
日志集
CLS 的日志集,用于投递服务日志。
日志主题
CLS 的日志主题,用于投递服务日志。
然后开启推理表收集 ,依次配置:
参数
说明
是否必填
默认值
Catalog
推理表所在的 Catalog。下拉中只展示当前账号有 Use Catalog 权限的 Catalog。
Schema
推理表所在的 Schema。下拉中只展示有 Use SchemaCreate Table 权限的 Schema。
表名前缀
推理表名称的前缀。填写后表名为 {前缀};未填写时表名默认为 {服务名称}_payload
平台会自动在指定 Catalog / Schema 下创建 Delta 表,并维护字段结构与样例数据。

在已运行服务上二次启用、关闭

服务详情页 → 编辑高级配置
新建时未启用 → 编辑时可二次开启。
新建时已启用 → 编辑时可二次关闭。关闭后历史推理表保留在 Catalog 中,仅停止后续写入。

推理表常见字段

平台默认包含的字段:
请求时间戳。
请求唯一 ID(Trace ID)。
输入 payload(JSON)。
输出 payload(JSON)。
模型名称、模型版本、服务版本。
具体字段会根据模型类型(分类、回归、深度学习)自动适配。进入 Catalog 中对应表的 概览 页可查看完整 Schema、示例数据与表属性。

基于推理表发起质量监控

推理表落库后,可在推理表详情页或数据质量模块中,以推理表为事实表创建质量监控任务(数据漂移、模型效果、公平性等长周期监控)。具体指标与配置方式详见 数据质量。

常见问题

Q:为什么推理表里没有数据? A:依次确认:① 服务高级配置中推理表开关已打开;② 服务有真实流量进入;③ 当前账号对推理表所在 Catalog / Schema 拥有读权限。如以上都满足仍无数据,进入版本详情页 日志 页签查看是否有 Catalog 写入失败的报错。
Q:日志服务和推理表的区别?
A:日志服务是实时排查工具 ,存放系统级请求、响应日志、保留期较短,不适合长周期分析;推理表是结构化离线事实表 ,存于 Catalog,可被 SQL 查询、可做漂移监控、可作为重训样本来源。

相关文档

部署在线推理服务(REST API)
数据质量