【发布时间】:2023-03-18 11:11:01
【问题描述】:
据我们所知,我们可以在 EKS 中将 fluentd 部署为 DaemonSet
它可以记录 pod 中的所有 stdout / stderr
但是如果一个 php 应用程序将日志写入文件,DaemonSet 中的 fluentd 将无法捕获文件的内容
我们如何实现它?
我想把另一个fluentd容器放到pod中,然后tail log文件,然后转发给DaemonSet中的其他fluentd
例如
laravel.input.conf: |-
<source>
@type tail
format multiline
multiline_flush_interval 1s
format_firstline /\[\d{4}-\d{1,2}-\d{1,2} \d{2}:\d{2}:\d{2}\]/
format1 /^\[(?<time>[^\]]*)\] (?<environment>[^ ]*) (?<severity>[^ ]*): (?<message>.*)$/
time_format %Y-%m-%d %H:%M:%S
path /var/log/laravel.log
pos_file /var/log/laravel.log.pos
tag myapp.laravel
</source>
可以吗
以及如何实现?
【问题讨论】:
-
是什么阻止您修复 php 应用程序以便它只写入标准输出?
-
他们使用 laravel,需要更改代码才能实现,但如果开发人员出于某种原因不想这样做,我需要帮助他们做上述事情,我以前做过一次,但忘记了步骤
-
您的 PHP 日志需要 Kubernetes 元数据吗?如果没有,那么您可以使用 tail 插件来跟踪您的 PHP 日志文件。
-
我也需要元数据,因为我之前所做的是在同一个 pod 中安装一个容器来跟踪日志并与 kube 元数据一起,然后推送到 es
标签: kubernetes fluentd daemonset