Tag: syslog ng

将docker日志获取到graylog2和本地

我一直在这个问题上工作了几天,没有find答案的运气。 设置是我有几个主机运行Docker容器组,我需要所有容器日志的本地副本,并在一个集中的graylog2服务器上。 graylog2服务器已启动并运行,并在端口9000上具有GELFinput,在514上具有系统日志UDPinput。 最初,容器正在login到Docker主机上的JSON文件。 然后,我改变了docker中的日志驱动程序使用GELF并发送到graylog2服务器。 这工作得很好,但事实certificate我们也需要本地的日志副本。 最好的部分是,graylog上的日志有很好的填充字段,包括“container_name”和“source”(这是docker主机的主机名)。 所以我恢复到使容器日志到JSON,然后只是将JSON日志发送到graylog2,但是当我这样做时,graylog2只显示一个包含源,container_name,container_id,但没有任何的相应字段。 然后,我试着将日志驱动更改为syslog,然后让rsyslog或syslog-ng将日志的副本发送给graylog2,但是在graylog2上创build的条目缺less一堆数据,这次消息只包含实际的消息,根本就没有关于container_name或container_id的信息。 然后,我尝试将日志驱动程序更改回GELF,并使syslog-ng在每个docker主机上侦听,docker正在将日志发送到正在坐的主机。 这和上面的解决scheme#2有相似的结果,所以我看到一个非常长的包含host,container_name,container_id,timestamp等的“message”字段,但是graylog2似乎并不想填充相应的字段。 此外,在这种方法中,所有日志都将日志源设置为docker主机的IP地址,即使我使用的是主机名。 我试着安装graylog-collector-sidecar,但是这似乎并没有工作。 有没有人有从哪里去的build议? 我想选项#3会好,如果我能以某种方式包括至lesscontainer_name显示(也许有一个标签)。 另一个我认为是好的解决scheme是,如果我能得到#4实际上填充字段,意思而不是这样: source: $IP message: $IP {"version","1.1","host":"$HOSTNAME","message":"$MESSAGE","container_name":"$CONTAINER_NAME","container_id":"$CONTAINER_ID",etc etc} 它应该显示这个: source: $HOSTNAME container_name: $CONTAINER_NAME container_id: $CONTAINER_ID message: $MESSAGE 任何人都知道我可以如何让graylog2(或syslog-ng)来格式化日志数据,使其看起来像下面的例子? 请注意,当我使用GELF日志驱动程序将日志数据直接从docker发送到graylog2时,数据确实以该格式显示,而且非常棒,我们只需要在本地保留一份日志的副本。 预先感谢您的任何意见! -Martin

如何让syslog在docker中可用?

我的应用程序将发送syslog local0消息。 当我将应用程序移到docker中时,发现很难显示syslog。 我试图运行docker作为syslog或journald,作为–log-dirver,都工作奇怪,/ var / log / local0.log显示控制台输出docker容器而不是我的应用程序的系统日志当我尝试运行此命令内容器 logger -p local0.info -ta message 所以,我尝试在docker容器中安装syslog-ng。 外部docker框是Arch Linux(内核4.14.8 + systemctl)。 Docker容器作为CentOS 6运行。如果我在容器中安装syslog-ng并启动它,它会显示以下消息。 # yum install -y syslog-ng # this will install syslog-ng 3.2.5 # /etc/init.d/syslog-ng start Plugin module not found in 'module-path'; module-path='/lib64/syslog-ng', module='afsql' Starting syslog-ng: Plugin module not found in 'module-path'; module-path='/lib64/syslog-ng', module='afsql' Error opening […]

将Docker作为syslog-ng目标运行失败

我有一个Vagrant创build的虚拟机运行股票Ubuntu Trusty 64,与一个主机CPU分配给它。 在那个虚拟机中,我有一个运行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 一切都很好,容器运行,只是坐在那里做很less。 如果我将打印语句添加到Python脚本,它将按照预期发送到stdout。 我还在该虚拟机中安装了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); }; 但是当我重新加载configuration时,syslog-ng消耗了大约20%的CPU和100%的CPU,并且容器永远不会被创build(运行sudo docker ps -a不会产生容器)。 运行sudo syslog-ng-ctl stats告诉我它正试图执行程序: […]