【问题标题】:reload containerized fluentd configuration重新加载容器化的 fluentd 配置
【发布时间】:2017-08-03 18:42:02
【问题描述】:

假设我的容器被命名为 fluentd,我希望这个命令会重新加载配置:

sudo docker kill -s HUP fluentd

相反,它会杀死容器。

似乎从入口点产生了一些进程:

PID   USER     TIME   COMMAND
1 root       0:00 {entrypoint.sh} /usr/bin/dumb-init /bin/sh /bin/entrypoint.sh /bin/sh -c fluentd -c /fluentd/etc/${FLUENTD_CONF} -p /fluentd/pl
5 root       0:00 /bin/sh /bin/entrypoint.sh /bin/sh -c fluentd -c /fluentd/etc/${FLUENTD_CONF} -p /fluentd/plugins $FLUENTD_OPT
13 fluent     0:00 /bin/sh -c fluentd -c /fluentd/etc/${FLUENTD_CONF} -p /fluentd/plugins $FLUENTD_OPT
14 fluent     0:00 {fluentd} /usr/bin/ruby /usr/bin/fluentd -c /fluentd/etc/fluentd.conf -p /fluentd/plugins
16 fluent     0:00 {fluentd} /usr/bin/ruby /usr/bin/fluentd -c /fluentd/etc/fluentd.conf -p /fluentd/plugins

尝试从容器 pid 13 内部进行 HUPping,它似乎可以工作。

Docker 正在向入口点发送信号。如果我检查 State.Pid,我会看到 4450。这是主机 ps:

root      4450  4432  0 18:30 ?        00:00:00 /usr/bin/dumb-init /bin/sh /bin/entrypoint.sh /bin/sh -c fluentd -c 
/fluentd/etc/${FLUENTD_CONF} -p /fluentd/plugins $FLUENTD_OPT
root      4467  4450  0 18:30 ?        00:00:00 /bin/sh /bin/entrypoint.sh /bin/sh -c fluentd -c /fluentd/etc/${FLUENTD_CONF} -p /fluentd/plugins $FLUENTD_OPT
ubuntu    4475  4467  0 18:30 ?        00:00:00 /bin/sh -c fluentd -c /fluentd/etc/${FLUENTD_CONF} -p /fluentd/plugins $FLUENTD_OPT
ubuntu    4476  4475  0 18:30 ?        00:00:00 /usr/bin/ruby /usr/bin/fluentd -c /fluentd/etc/fluentd.conf -p /fluentd/plugins
ubuntu    4478  4476  0 18:30 ?        00:00:00 /usr/bin/ruby /usr/bin/fluentd -c /fluentd/etc/fluentd.conf -p /fluentd/plugins

任何想法如何在没有自定义脚本的情况下重新加载 conf 以找到 HUP 的正确进程?

【问题讨论】:

  • 你有没有发现在容器中发送 SIGHUP 到 fluentd ?我尝试了所有这些,但其中一个真的重新加载了。

标签: docker fluentd


【解决方案1】:

我相信这个命令应该可以工作

sudo docker exec fluentd pkill -1 -x fluentd

我在 fluentd 容器内的 sleep 命令上对其进行了测试,它可以工作。

【讨论】:

  • 发送 '-1 -x sh' 有效。流利的进程显然是最低的孩子,所以你必须得到他们的父母。
  • 第二次查看时,sh 选择了两个进程,即入口点和子进程,并且将 hup 发送到两者都不起作用。可以做一些花哨的工作,试图用 grep 和 awk 等选择孩子,但不值得。我将重新启动容器。
  • docker kill --signal=HUP fluentd_container_id
  • 从 1.9.0 版本开始,已更改为 SIGUSR2(12)。 (docs.fluentd.org/deployment/signals#sigusr2) ex) docker exec fluentd pkill -12 -x fluentd
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-13
  • 1970-01-01
  • 1970-01-01
  • 2011-03-28
  • 1970-01-01
  • 2023-01-12
  • 2017-07-24
相关资源
最近更新 更多