如何解决使用stdout或stderr作为流利的源代码?
我目前在Kubernetes中设置了一个php-fpm容器,用于向stderr输出错误消息,异常等...,我想知道如何使用该容器的输出作为fluentd的源/输入。 / p>
从日志文件读取输出并使用f尾巴作为输入插件,在这种情况下不是一种选择,因此我正在寻找其他解决方案。
解决方法
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个因素的应用问题:
在登台或生产部署中,每个流程的流都将由执行环境捕获,并与应用程序中的所有其他流进行整理,并路由到一个或多个最终目标进行查看和长期存档。这些存档目标对应用程序不可见或不可配置,而是由执行环境完全管理。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。