You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让SageMaker日志在CloudWatch可见并实现单单元格使用追踪

SageMaker 笔记本日志输出到CloudWatch及单元格追踪方案

一、让print/logging日志正常显示在CloudWatch的方法

  • 首先确认SageMaker Notebook实例的IAM角色权限:必须附加CloudWatch日志相关权限,可手动给角色新增允许logs:CreateLogStream、logs:PutLogEvents的权限策略,SageMaker默认的日志组路径为/aws/sagemaker/NotebookInstances,对应实例名下的jupyter.log就是Jupyter内核的输出流采集日志。
  • logging模块配置调整:logging默认日志级别为WARNING,info/debug级别的日志不会输出,需要显式指定日志级别并绑定输出流到stdout,参考配置:
import logging
import sys

logging.basicConfig(
    level=logging.INFO,
    stream=sys.stdout,
    format='%(asctime)s - %(levelname)s - %(message)s'
)
  • print输出特殊处理:Jupyter内核默认会缓存stdout输出,要实现日志即时上报可以给print加上flush=True参数,示例:print("当前单元格执行开始", flush=True);如果需要全 notebook 关闭输出缓存,可以在任意单元格执行%autoflush 1魔法命令。
  • 日志验证:执行输出操作后,进入CloudWatch控制台打开对应日志组下的jupyter.log流,即可查询到打印和logging输出的内容。

二、无需print/logging的单元格使用情况追踪方案

  • 自定义Jupyter单元格魔法函数:可以写一个全局的单元格执行装饰器,自动在单元格执行前后采集耗时、执行状态、内容哈希等元数据上报到CloudWatch,不需要在每个单元格手动加打印代码,简易实现示例:
from IPython.core.magic import register_cell_magic
import boto3
import time
from datetime import datetime

cw_logs = boto3.client('logs')
LOG_GROUP = '/aws/sagemaker/NotebookInstances/<替换为你的实例名>'
LOG_STREAM = 'cell-tracking.log' # 可自定义日志流名称

@register_cell_magic
def track_cell(line, cell):
    start_time = time.time()
    timestamp = int(datetime.now().timestamp() * 1000)
    status = "success"
    try:
        exec(cell)
    except Exception as e:
        status = f"failed: {str(e)}"
        raise
    finally:
        duration = round(time.time() - start_time, 2)
        # 上报追踪日志到CloudWatch
        cw_logs.put_log_events(
            logGroupName=LOG_GROUP,
            logStreamName=LOG_STREAM,
            logEvents=[
                {
                    'timestamp': timestamp,
                    'message': f"单元格执行完成 | 耗时: {duration}s | 状态: {status} | 内容哈希: {hash(cell)}"
                }
            ]
        )

后续需要追踪的单元格开头加上%%track_cell即可自动上报执行数据。

  • 配置SageMaker Notebook生命周期脚本:可以在实例的生命周期配置的启动脚本中安装Jupyter全局扩展,hook所有单元格的执行事件,无需用户在单元格内加任何代码,即可自动收集全实例所有单元格的执行元数据上报到CloudWatch,适合团队共享实例的统一管控场景。
  • 直接使用CloudTrail审计日志:SageMaker默认会把所有Notebook的单元格执行、修改操作上报到CloudTrail,如果只需要追踪执行用户、执行时间、操作行为,不需要自定义输出内容,直接查询CloudTrail对应的事件即可,无需额外开发。

内容的提问来源于stack exchange,提问作者Nour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:24:03