模型服务运行后需要持续观测调用量、延迟、错误率与模型效果。DataBuddy 提供\\运行指标、实时日志、推理表\\三类能力,覆盖从在线问题排查到离线模型质量监控的全链路。
前提条件
已创建并运行模型服务。基础流程详见 部署在线推理服务(REST API)。
启用推理表前,需对目标 Catalog / Schema 拥有
Use Catalog、Use Schema、Create 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 dtend = dt.datetime.now(dt.timezone(dt.timedelta(hours=8)))start = end - dt.timedelta(hours=1)ctx = Nonewhile True:resp = client.get_pod_logs(service_id=service_id,pod_name=f"{service_id}-*", # 支持通配符匹配该服务下的实例limit=200, # 单次条数建议 ≤ 500start_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 failed、pod group is ready 等。 |
出现次数 | 该事件累计发生的次数。 |
可开启 自动刷新 持续拉取最新事件。
提示
事件仅保留最近 15 天内的记录,请尽快查阅。
事件用于排查\\突然变化\\类问题(副本异常退出、健康检查持续失败、扩缩容未生效等),是定位实例级故障的首选入口。
服务日志投递及推理表收集
支持将推理服务日志投递至指定的 CLS 中,并且支持开启推理表(Inference Table)收集,将服务的请求 payload 与响应 payload 实时写入 Catalog 中的 Delta 表,作为后续质量监控的事实数据。
在新建服务时启用
在新建服务的 高级配置 > 服务日志投递 处打开开关后,配置 CLS 投递:
参数 | 说明 | 是否必填 | 默认值 |
日志集 | CLS 的日志集,用于投递服务日志。 | 是 | — |
日志主题 | CLS 的日志主题,用于投递服务日志。 | 是 | — |
然后开启推理表收集 ,依次配置:
参数 | 说明 | 是否必填 | 默认值 |
Catalog | 推理表所在的 Catalog。下拉中只展示当前账号有 Use Catalog 权限的 Catalog。 | 是 | — |
Schema | 推理表所在的 Schema。下拉中只展示有 Use Schema 与 Create 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)
数据质量