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

AWS SageMaker自定义容器端点日志无法输出至CloudWatch,求解决

解决SageMaker自定义容器日志无法输出到CloudWatch的方法

1. 调整Python logging配置,绑定标准输出流

默认logging模块若未配置输出handler,日志只会留在内存中,不会被SageMaker捕获。修改你的日志代码,强制将日志输出到stdout/stderr:

import logging
import sys

logger = logging.getLogger()
logger.setLevel(logging.DEBUG)

# 清除默认handler避免重复输出
if logger.hasHandlers():
    logger.handlers.clear()

# 配置输出到标准输出的handler
stdout_handler = logging.StreamHandler(sys.stdout)
stdout_handler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
stdout_handler.setFormatter(formatter)
logger.addHandler(stdout_handler)

# 可选:配置错误日志输出到标准错误流
stderr_handler = logging.StreamHandler(sys.stderr)
stderr_handler.setLevel(logging.ERROR)
stderr_handler.setFormatter(formatter)
logger.addHandler(stderr_handler)

logger.debug("调试路径信息")
logger.error("路径错误提示")

2. 检查容器启动脚本的输出流向

自定义容器的启动脚本(如serve脚本)不能将stdout/stderr重定向到非标准位置。如果用nohup启动服务,要确保输出合并到标准流:

nohup python your_inference_script.py &>> /dev/stdout &

若不需要后台运行,直接正常启动即可,SageMaker会自动捕获容器的标准输出。

3. 确认端点的CloudWatch日志配置

在SageMaker控制台检查端点的日志设置:

  • 进入目标端点的「端点配置」页面,查看「日志配置」
  • 确保已勾选「启用日志」,且日志级别设置为包含DEBUG(或更低级别)
  • 验证端点使用的IAM角色拥有logs:CreateLogStream、logs:PutLogEvents等CloudWatch日志操作权限

4. 确保容器内日志目录权限正常

SageMaker默认会将容器日志写入/var/log/sagemaker/目录,在Dockerfile中添加权限配置:

RUN mkdir -p /var/log/sagemaker && chmod 777 /var/log/sagemaker

5. 本地验证容器日志输出

先在本地运行自定义容器,执行推理脚本,确认日志能正常输出到终端。如果本地无输出,问题出在代码或容器配置,而非SageMaker平台。

内容的提问来源于stack exchange,提问作者sam.hay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 11:15:37