在构建、测试和运行工作负载时,监控其进度以调试问题会很有帮助。以下工具可用于监控和调试:
Cloud Logging:在排查 Confidential Space 工作负载问题的第一步中,您可以将
STDOUT
和STDERR
重定向到 Cloud Logging,然后检查 Cloud Logging 中是否有工作负载返回代码,以了解失败的位置。调试 Confidential Space 映像:调试 Confidential Space 映像可让运行工作负载的机密虚拟机在工作负载完成后保持运行,并运行 SSH 服务器。这样,您就可以远程登录虚拟机来诊断问题。在您确信代码正常运行之前,使用调试映像会很有用。当您需要开始处理敏感的生产数据时,请切换到生产 Confidential Space 映像。
内存用量监控:您可以在 Cloud Logging 或 Metrics Explorer 中查看工作负载的内存用量。在跟踪内存用量之前,工作负载作者需要允许,并且工作负载操作员需要启用。
交互式 shell:使用 SSH 连接到工作负载机密虚拟机后,您可以使用
sudo ctr task exec -t --exec-id shell tee-container bash
命令进入容器内的交互式 shell,以诊断工作负载问题。
日志记录
与任何命令行程序一样,工作负载 STDOUT
和 STDERR
可以在控制台中显示。工作负载运维者也可以通过将 Confidential Space 虚拟机上的 tee-container-log-redirect
元数据键设置为 true
或 cloud_logging
,并确保运行工作负载的服务账号具有 logging.logWriter
角色,将其重定向到 Cloud Logging。
工作负载作者可以使用 log_redirect
启动政策来阻止重定向。
为降低所承担的风险,请记录最小信息量,并且不要记录敏感信息。
查看 Confidential Space 日志
如果关联到 Confidential Space 虚拟机的服务账号已被授予 logging.logWriter
角色,并且您已将日志重定向到 Cloud Logging,则可以通过查看虚拟机日志来排查错误:
转到 Google Cloud 控制台中工作负载操作员项目中的 Logging。
点击查询标签页旁边的时间范围,以设置要查看的日志记录期。
按以下日志字段(如果可用的话)过滤日志:
资源类型:虚拟机实例
实例 ID:机密虚拟机的实例 ID
日志名称:confidential-space-launcher
阅读失败消息,了解问题所在。资源可能未正确设置,数据协作者的 WIP 提供方中的属性条件可能与 Confidential Space 工作负载所做的声明不匹配,或者工作负载本身可能存在错误。
返回代码
运行启动器和工作负载时,返回代码会显示在控制台中并且可重定向到 Cloud Logging。
下表介绍了返回代码:
编码 | 定义 | 虚拟机停止行为 |
---|---|---|
0 | 使用生产映像时,工作负载已成功完成。 | 工作负载完成后,虚拟机会停止。 |
1 | 使用生产映像时,工作负载或启动器返回错误。 | 虚拟机会在返回错误后停止。 |
3 | 启动器因其 tee-restart-policy 失败后而重启。 |
虚拟机会重启。 |
4 | 使用调试映像时,工作负载或启动器已完成运行,且虚拟机现已空闲。 | 工作负载完成或返回错误后,虚拟机不会停止。这样,您就可以通过 SSH 调试其工作负载。 |
如果工作负载失败,工作负载操作员只会收到 workload finished with a non-zero return code
消息,而不会提供进一步的背景信息。对于生产映像,可以通过 tee-restart-policy=OnFailure
将启动器设置为在失败时重启。