我目前在Kubernetes中设置了一个php-fpm容器,用于向stderr输出错误消息,异常等...,我想知道如何使用该容器的输出作为fluentd的源/输入。 / p>
从日志文件读取输出并使用f尾巴作为输入插件,在这种情况下不是一种选择,因此我正在寻找其他解决方案。
答案 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个因素的应用问题:
在登台或生产部署中,每个流程的流都将由执行环境捕获,并与应用程序中的所有其他流进行整理,并路由到一个或多个最终目标进行查看和长期存档。这些存档目标对应用程序不可见或不可配置,而是由执行环境完全管理。