12Factor App:使用Fluentd捕获stdout / stderr日志

时间:2015-02-25 21:57:42

标签: logging fluentd 12factor

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

基本上,应用应该直接写入stdout / stderr。无论如何将这些流直接重定向到流畅的(未绑定到rsyslog / syslog)?随着我越来越清楚流利,我相信它将是一个很好的工具,可以从多个应用程序/平台进行日志聚合。

主要原因是,如果应用程序是跨平台的,则rsyslog / syslog可能不可用,并且据我所知,使用日志框架(需要所需的配置才能使用)将违反12因子。

谢谢!

2 个答案:

答案 0 :(得分:3)

您需要将流程管理器配置为使用流利。

  

"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通常依赖于loggerUnix Domain Socket有一个选项(-u)可以写入configure fluentd to use that same socket as an input stream。反过来,您可以Fluentd supports a lot of input streams

similar thread(他们称之为数据源),它应该为几乎任何环境提供解决方案。您可能正在使用的流程管理器(我们需要知道这些流程管理器才能提供更完整的解决方案)。

答案 1 :(得分:2)

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

该程序从子进程读取STDOUT输出,并将记录发布到Fluentd。