12Factor 应用程序:使用 Fluentd 捕获 stdout/stderr 日志

12Factor App: Capturing stdout/stderr logs with Fluentd

通过阅读 12factor 中的以下 post 我提出了一个问题,我想看看你们是如何处理这个问题的。

基本上,应用程序应该直接写入 stdout/stderr。无论如何,是否可以将这些流 直接重定向到 fluentd(不绑定到 rsyslog/syslog)?随着我越来越了解 fluentd,我相信它会是一个很好的工具,可以从多个 apps/platforms.

进行日志聚合

这样做的主要原因是,如果应用程序是跨平台的,rsyslog/syslog 可能不可用,据我所知,使用日志记录框架(需要必要的配置才能工作)会违反了 12 因素。

谢谢!

这仍然是一个实验性程序,但您可以看一下 stdout-hook。

此程序从子进程读取 STDOUT 输出,并将 post 记录到 Fluentd。

您需要配置进程管理器以使用 fluentd。

"Twelve-factor app processes should [...] rely on the operating system’s process manager (such as Upstart, a distributed process manager on a cloud platform, or a tool like Foreman in development) to manage output streams [...]."

基本上,想法是日志重定向是进程管理器关注的问题。 Upstart, for example, usually relies on logger, which has an option (-u) to write to a Unix Domain Socket. In turn, you can configure fluentd to use that same socket as an input stream.

Fluentd supports a lot of input streams(他们称它们为数据源),它应该为您可能正在使用的几乎任何环境和流程管理器提供解决方案(我们需要知道这些以便提供更完整的解决方案) .