【问题标题】:Kubernetes pod fluentd forward to fluentd DaemonSetKubernetes pod fluentd 转发到 fluentd DaemonSet
【发布时间】: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


【解决方案1】:

为什么不直接写入标准输出或错误并使用流利的:

<source>
    @type tail
    @id in_tail_containers_logs
    path /var/log/containers/*.log
    ....
</source>

【讨论】:

    猜你喜欢
    • 2017-05-31
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多