用ECS任务ID命名Sidekiq工作进程

时间:2018-07-27 08:22:25

标签: docker sidekiq amazon-ecs

我们将ECS用于我们的应用程序,但是WebUI中的进程获得了相当无用的名称,例如66ef25674344。我希望它们以运行时所用的ECS任务ID命名。

1 个答案:

答案 0 :(得分:1)

我自己弄清楚了。 Sidekiq使用DYNO环境变量(可能是Heroku的东西)或运行它的服务器的主机名作为进程名(请参阅source)。在Docker中,默认情况下,主机名设置为容器ID,但这并不能真正反映出我们在ECS UI中可以看到的任何内容。

如果我们在进程开始之前设置DYNO envvar,它将用作进程名称。这仍然可以在config/initializers/sidekiq.rb中完成,因此我们不需要在shell脚本中解析JSON:

if ENV.key?("ECS_CONTAINER_METADATA_FILE")
  ENV["DYNO"] = JSON.parse(
    File.read(ENV["ECS_CONTAINER_METADATA_FILE"])
  )["TaskARN"].split("/").last
end

请注意,默认情况下禁用ECS_CONTAINER_METADATA_FILE引用的环境和文件。 Here the guide to enable the metadata file