【发布时间】:2018-07-27 16:22:24
【问题描述】:
我们将 ECS 用于我们的应用程序,但 WebUI 中的进程获得了相当无用的名称,例如 66ef25674344。我希望它们以它们运行的 ECS 任务 ID 命名。
【问题讨论】:
标签: docker sidekiq amazon-ecs
我们将 ECS 用于我们的应用程序,但 WebUI 中的进程获得了相当无用的名称,例如 66ef25674344。我希望它们以它们运行的 ECS 任务 ID 命名。
【问题讨论】:
标签: docker sidekiq amazon-ecs
我自己想通了。 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 envvar 和它所引用的文件默认是禁用的。 Here the guide to enable the metadata file.
【讨论】: