Strace 实用程序在 AWS ECS 任务中不起作用

Strace utility does not work inside AWS ECS task

我们有一些 php-fpm 进程卡在我们的生产系统中执行 ECS FARGATE 任务。 我尝试使用以下方式调试这些服务:“strace -p 50”,其中 50 是我的 php-fpm 子工作进程的 PID,我在 root 用户下 运行 宁此,但是收到此错误:

Could not attach to process.  If your uid matches the uid of the target
process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try
again as the root user.  For more details, see /etc/sysctl.d/10-ptrace.conf

我修改了/etc/sysctl.d/10-ptrace.conf中的设置并保存了文件,但是我仍然得到同样的错误。

此外,我想提一下这个问题最有可能与 Docker 有关,因为我们在 运行 在本地环境中使用 strace 时也遇到了同样的问题 运行 s 作为 Docker 容器。我看到一些以前的 SO 帖子提到向“docker 运行”命令添加一些参数来修复它,但不确定是否可以在 ECS 任务中执行。

来自this blog post


Fargate 任务现在支持 CAP_SYS_PTRACE Linux 功能

2017 年,我们引入了对 ECS 任务添加 Linux 功能的支持。当我们在同一年推出 AWS Fargate 时,我们决定禁用这些选项,因为我们希望最大限度地减少攻击面以提供一个安全的平台。

从那以后,我们收到了客户(以及关注安全性和合规性的合作伙伴)的反馈,他们可以充分利用其中的一些功能(即 CAP_SYS_PTRACE)。有许多可观察性工具可以帮助合规性很重要的客户实现他们所需的可见性。例如,其中一些客户表示需要 运行 工具,例如 strace

正是出于这个原因,从 Fargate 平台版本 1.4.0 的可用性开始,我们允许客户在他们的 Fargate 任务定义中启用此特定功能(跨所有可用的 Fargate 平台版本)。请注意,CAP_SYS_PTRACE 是目前唯一可以添加到 Fargate 任务的功能。 运行ning 在 EC2 启动类型上的任务仍然支持其他功能。


TL/DR:您需要在任务定义中添加this parameter。当然,还要确保您使用的是 Fargate 平台版本 1.4(或 LATEST 今天映射到 1.4)。