【问题标题】:Getting docker logs to graylog2 AND locally在本地获取 docker 日志到 graylog2 和
【发布时间】:2017-07-23 23:42:04
【问题描述】:

我已经解决这个问题几天了,但没有找到答案。

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

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

  1. 最初,容器记录到 docker 主机上的 JSON 文件。然后我将 docker 中的日志驱动程序更改为使用 GELF 并发送到 graylog2 服务器。这工作得很好,但事实证明我们也需要日志的本地副本。最好的部分是 graylog 上的日志很好地填写了字段,包括“container_name”和“source”(这是 docker 主机的主机名)之类的内容。

  2. 1234563依此类推,但不在任何相应的字段中。
  3. 然后我尝试将日志驱动程序更改为 syslog 并让 rsyslog 或 syslog-ng 将日志的副本发送到 graylog2,但是在 graylog2 上创建的条目丢失了一堆数据,这次只有消息包含实际消息,根本没有关于 container_name 或 container_id 的信息。

  4. 然后我尝试将日志驱动程序改回 GELF 并让 syslog-ng 监听每个 docker 主机,并且 docker 将日志发送到它所在的主机。这与上面的解决方案#2 具有相似的结果,因此我看到一个非常长的“消息”字段,其中包含主机、容器名称、容器 ID、时间戳等,但 graylog2 似乎不想填充相应的字段。此外,在这种方法中,所有日志都将日志源设置为 docker 主机的 IP 地址,即使我对所有内容都使用主机名。

  5. 我尝试安装 graylog-collector-sidecar,但似乎根本不起作用。

有人对从这里去哪里有任何建议吗?如果我能以某种方式至少包含要显示的 container_name(可能带有标签),我认为选项 #3 会很好。我认为另一个很好的解决方案是,如果我可以让#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 时,数据确实以该格式显示,这很棒,我们只需要在本地保留一份日志副本。

提前感谢您的任何意见! -马丁

【问题讨论】:

  • 为什么容器中也需要它们?
  • 嗨@R0MANARMY,这很复杂。简短版本是有一些遗留脚本可以解析需要继续工作的本地日志,尽管我确实可以选择更改它们读取的位置(json vs syslog),尽管如果容器名称保留在本地日志中会很好。
  • 你试过 gliderlabs/logspout 了吗?我使用命令“syslog://HOSTNAME:514”。 Logspout 可以收集主机上所有运行的 docker 容器的日志,并通过 syslog-protocoll 发送到 graylog。

标签: docker graylog2 syslog-ng


【解决方案1】:

看起来 Docker Enterprise 允许您使用双重日志记录,请参阅 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

【讨论】:

    猜你喜欢
    • 2019-11-07
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    相关资源
    最近更新 更多