首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取码头日志到graylog2和本地

获取码头日志到graylog2和本地
EN

Stack Overflow用户
提问于 2017-03-03 18:30:10
回答 1查看 1.5K关注 0票数 1

我已经在这个问题上工作了几天了,一直没有找到答案。

设置是,我有几个主机正在运行一组码头容器,我需要拥有所有容器日志的本地副本以及集中的graylog2服务器上的副本。

graylog2服务器已经启动并运行,在端口9000上有GELF的输入,514上有syslog的输入。

  1. 最初,容器登录到码头主机上的JSON文件。然后,我将坞中的日志驱动程序更改为使用GELF并发送到graylog2服务器。这很好,但事实证明,我们也需要本地的日志副本。这方面最好的部分是灰日志上的日志很好地填充了字段,包括"container_name“和"source”(这是停靠主机的主机名)。
  2. 因此,我返回到将容器日志记录到JSON,然后将JSON日志发送到graylog2,但是当我这样做时,graylog2只是显示了消息的一个长字符串,其中包括源、container_name、container_id等,但没有显示在任何相应的字段中。
  3. 然后,我尝试将日志驱动程序更改为syslog,并让rsyslog或syslog-ng将日志副本发送到graylog2,但是在graylog2上创建了丢失了一堆数据的条目,这次消息只包含实际消息,根本没有关于container_name或container_id的任何信息。
  4. 然后,我尝试将日志驱动程序更改为GELF,让syslog-ng侦听每个坞主机,而docker将日志发送到它所在的主机。这与上面的解决方案2有类似的结果,因此我看到一个很长的"message“字段,其中包含主机、container_name、container_id、时间戳等,但是graylog2似乎不想填充相应的字段。此外,在此方法中,所有日志都将日志源设置为停靠主机的IP地址,即使我对所有内容都使用了主机名。
  5. 我试着安装灰色日志收集器,但这似乎根本不起作用。

有人对从这里到哪里有什么建议吗?我在想,如果我能以某种方式至少将container_name包括进来(也许带有一个标签),那么第3选项就更好了。我认为另一个很好的解决方案是,如果我能够让#4实际填充字段,这意味着不需要这样做:

代码语言:javascript
复制
source: $IP
message: $IP {"version","1.1","host":"$HOSTNAME","message":"$MESSAGE","container_name":"$CONTAINER_NAME","container_id":"$CONTAINER_ID",etc etc}

它应该显示如下:

代码语言:javascript
复制
source: $HOSTNAME
container_name: $CONTAINER_NAME
container_id: $CONTAINER_ID
message: $MESSAGE

有人知道我如何让graylog2 (或syslog-ng)格式化日志数据,使其看起来像下面的示例吗?请注意,当我使用GELF日志驱动程序将日志数据从docker直接发送到graylog2时,数据确实以这种格式出现,而且非常好,我们只需要在本地保存日志的副本。

谢谢您的输入!-Martin

EN

回答 1

Stack Overflow用户

发布于 2019-05-16 02:14:16

看起来像Docker允许您使用双重日志记录,请参阅https://docs.docker.com/config/containers/logging/configure/#limitations-of-logging-drivers

另一种选择是使用fluentd将日志发送到Graylog (而不是使用Docker的日志驱动程序),请参见https://jsblog.insiderattack.net/bunyan-json-logs-with-fluentd-and-graylog-187a23b49540

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42586062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档