【问题标题】:Running Docker as a syslog-ng destination fails将 Docker 作为 syslog-ng 目标运行失败
【发布时间】:2015-03-10 00:22:17
【问题描述】:

我有一个 Vagrant 创建的虚拟机,运行 Ubuntu Trusty 64,并为其分配了一个主机 CPU。 在该 VM 中,我有一个运行 Python 3.4.3 的 Docker 映像:

FROM python:3.4.3-slim

ENTRYPOINT ["/usr/local/bin/python"]

当我执行任意 Python 脚本时:

import time

while True:
    time.sleep(1)

像这样:

sudo docker run -i -v /etc/alloy_listener/scripts:/scripts:ro alloy_listener /scripts/test.py

一切都很好,容器运行,只是坐在那里做的很少。如果我将打印语句添加到 Python 脚本,它会按预期发送到标准输出。

我还在那个 VM 中安装了 syslog-ng,我的意图是使用我的容器化 Python 作为 syslog-ng 目标:

source s_foo {
  unix-stream("/dev/log");
};

destination d_foo {
  program("'docker run -i -v /etc/alloy_listener/scripts:/scripts:ro alloy_listener /scripts/test.py'");
};

log {
  source(s_foo);
  destination(d_foo);
};

但是当我重新加载配置时,syslog-ng 消耗了大约 20% 的虚拟机 CPU 和 100% 的主机 CPU,并且永远不会创建容器(运行 sudo docker ps -a 不会产生容器)。运行sudo syslog-ng-ctl stats 告诉我它正在尝试执行程序:

dst.program;d_foo#0;'docker run -i -v /etc/alloy_listener/scripts:/scripts:ro alloy_listener /scripts/test.py';a;dropped;0
dst.program;d_foo#0;'docker run -i -v /etc/alloy_listener/scripts:/scripts:ro alloy_listener /scripts/test.py';a;processed;2
dst.program;d_foo#0;'docker run -i -v /etc/alloy_listener/scripts:/scripts:ro alloy_listener /scripts/test.py';a;stored;0

我的感觉是,因为 syslog-ng 使用了 20% 的 CPU,但使用了 100% 的主机,它是 I/O 绑定的,并且 VM 正在努力工作以跟上。为此,我尝试在 Python 脚本中使用和刷新标准输入和标准输出,但据我所知,因为它甚至没有创建容器,所以它没有达到脚本的程度。

所以我的下一个想法是我没有尝试过 docker 的 -a-d-i-t 标志的某种组合,但我确信我已经尝试了所有允许的组合无济于事。

我错过了什么?

【问题讨论】:

    标签: python docker syslog-ng


    【解决方案1】:

    如果您在前台启动 syslog-ng (syslog-ng-binary -Fedv),您会看到 syslog-ng 在循环中启动和停止程序目标,这会导致 100% 的 CPU 旋转。 但是在本地调查问题后,您应该将程序目标用作(不带'): program("sudo docker run -i -v /scripts:/scripts python-test /scripts/test.py");

    兄弟, 老鼠

    【讨论】:

    • 解决了 - 我不敢相信这只是那些额外的单引号。我什至不确定它们是从哪里来的——我一定是出于某种原因在某个时候添加了它们并且从未将它们取出。谢谢米克。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多