【问题标题】:best way to send docker container logs to logstash将 docker 容器日志发送到 logstash 的最佳方式
【发布时间】:2015-05-05 07:18:01
【问题描述】:

假设我在容器 (docker) 中运行 Nginx。
访问日志和错误日志通过 STDOUT 发送,在 Dockerfile 中:

# forward request and error logs to docker log collector
RUN ln -sf /dev/stdout /var/log/nginx/access.log
RUN ln -sf /dev/stderr /var/log/nginx/error.log

Logspout 似乎是一个优雅的解决方案,可以在 logstash 中发送容器的 STDOUT(配置了 syslog 输入)

input {
    syslog {
        type => syslog
        port => 5514
    }
}

但是 logspout 不知道通过 STDOUT 发送的日志的格式(或者我错过了什么?)

所以我必须做类似的事情:

input {
    syslog {
        type => nginx-access
        port => 5514
    }
}

那么 nginx 错误日志呢?如果我也通过 STDOUT 发送 php-fpm 日志怎么办? logspout 是如何管理这个的?

另一种解决方案是在容器中运行 rsyslog 并将收集到的日志发送到 logstatsh 的输入...

正如你所看到的,这对我来说并不是很清楚......我希望能够将 nginx 和 php-fpm 日志发送到 logstash,以便它们可以被解释为它们是什么......但我不知道找到一个“好的做法”...

你能帮帮我吗

【问题讨论】:

    标签: logging docker logstash


    【解决方案1】:

    我刚刚注意到recent versions of nginx can be configured to log to network syslog daemons.

    从 1.7.1 版开始可以记录到 syslog。

    使用它,您可以在 logstash 中的专用 UDP 端口上配置 syslog 输入过滤器,然后您就可以参加比赛了。

    不幸的是,v1.7.1 在官方 repos 中还有很长的路要走。您将需要一个某处的日志托运人。

    1. 在 nginx 容器中。
    2. 在并行容器中使用“--volumes-from”访问 nginx 容器。
    3. 在卷绑定到主机文件系统的 docker 主机上。

    您有许多日志托运人可供选择,还有一个 free chapter of The Logstash Book dedicated to the subject

    【讨论】:

      【解决方案2】:

      现在,您可以使用一些意大利式管道来做到这一点。

      在较新版本的 Docker 中,有a GELF output driver,您可以将其配置为发送日志。由于 logstash 有 a GELF input plugin,您可以配置 logstash 以接收这些相同的日志消息,并对它们做一些有用的事情。

      如果您希望避免 GELF 转换往返,另一种选择是使用 logspout-logstash,这是一个用于 logspout 的 logstash 输出插件,它会在日志条目从 Docker 出来时读取它们。

      附录:自从最初编写此答案以来,我一直活跃在这个领域,并构建了 mobystash 作为logspout-logstashsyslogstash 的更现代和更易于管理的替代品,用于直接从/dev/log 套接字并将它们放入logstash。

      【讨论】:

      • 请注意,GELF 输出驱动程序仅使用 UDP(截至 2017 年 4 月 20 日),因此如果 logstash 在其他机器上,包可能会丢失。
      • 同样重要的是要注意 Docker GELF 驱动程序不支持多行消息,这非常烦人,例如带有异常记录:github.com/moby/moby/issues/22920
      猜你喜欢
      • 2015-02-15
      • 2019-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-06
      • 2022-01-14
      相关资源
      最近更新 更多