使用stdout或stderr作为流利的源代码?

时间:2020-10-29 16:21:36

标签: logging kubernetes stderr fluentd

我目前在Kubernetes中设置了一个php-fpm容器,用于向stderr输出错误消息,异常等...,我想知道如何使用该容器的输出作为fluentd的源/输入。 / p>

从日志文件读取输出并使用f尾巴作为输入插件,在这种情况下不是一种选择,因此我正在寻找其他解决方案。

1 个答案:

答案 0 :(得分:3)

Docker将您的stdout / stderr日志写入/var/lib/docker/containers,Kubernetes将该目录符号链接到/var/log/containers

在Kubernetes世界中,访问其他容器的日志的界面仅是此目录,您不能直接访问它们的stdout或stderr。

看看有关部署到Kubernetes的Fluentd文档:https://docs.fluentd.org/container-deployment/kubernetes

在DaemonSet清单上,您可以看到/var/log以相同的名称安装在Fluentd容器中,并且tail插件用于读取此目录中的文件。

所以我说的是您对拥有12个要素的应用程序的担心是完全有效的,并且当您将日志写入stdout / stderr时,Docker会将其写入文件,而Fluentd必须使用这些文件来访问这些文件您的日志。因此,请使用tail插件并继续。

顺便说一句,可以解决12个因素的应用问题:

在登台或生产部署中,每个流程的流都将由执行环境捕获,并与应用程序中的所有其他流进行整理,并路由到一个或多个最终目标进行查看和长期存档。这些存档目标对应用程序不可见或不可配置,而是由执行环境完全管理。

还可以看看Kubernetes logging architecture

相关问题