使用fluentd守护进程记录Kubernetes

时间:2019-07-11 06:35:12

标签: logging kubernetes amazon-cloudwatch fluentd

我在kubernetes集群中配置了我的fluentd-daemonset以将日志发送到cloudwatch。我遵循了this教程并进行了流利的设置。但是在cloudwatch中,我也可以看到流利的日志。如何停止将流利的日志推送到CloudWatch?

这是我使用的配置文件,

<source>
  @type tail
  @id in_tail_container_logs
  @label @containers
  path /var/log/containers/*.log
  pos_file /var/log/fluentd-containers.log.pos
  tag *
  read_from_head true
  <parse>
    @type json
    time_format %Y-%m-%dT%H:%M:%S.%NZ
  </parse>
</source>

<label @containers>
  <filter **>
    @type kubernetes_metadata
    @id filter_kube_metadata
  </filter>

  <filter **>
    @type record_transformer
    @id filter_containers_stream_transformer
    <record>
      stream_name ${tag_parts[3]}
    </record>
  </filter>

  <match **>
    @type cloudwatch_logs
    @id out_cloudwatch_logs_containers
    region "#{ENV.fetch('REGION')}"
    log_group_name "/eks/#{ENV.fetch('CLUSTER_NAME')}/containers"
    log_stream_name_key stream_name
    remove_log_stream_name_key true
    auto_create_stream true
    retention_in_days "#{ENV.fetch('RETENTION_IN_DAYS')}"
    <buffer>
      flush_interval 5
      chunk_limit_size 2m
      queued_chunks_limit_size 32
      retry_forever true
    </buffer>
  </match>
</label>

3 个答案:

答案 0 :(得分:0)

我在配置中使用exclude_path排除了流利的日志,如下所示,但现在我没有得到它们。

<source>
  @type tail
  @id in_tail_container_logs
  @label @containers
  path /var/log/containers/*.log
  pos_file /var/log/fluentd-containers.log.pos
  exclude_path ["/var/log/containers/*fluentd*"]
  tag *
  read_from_head true
  <parse>
    @type json
    time_format %Y-%m-%dT%H:%M:%S.%NZ
  </parse>
</source>

答案 1 :(得分:0)

它应该按照注释工作:

<match fluent.**>
  @type null
</match>

例如以下设置:

<match fluent.**>
  @type file
  path /var/log/internal/my-fluentd.log
  compress gzip
</match>

根据文档,您可以使用以下配置排除这些日志:

exclude_path ["/var/log/internal/*.gz"]

答案 2 :(得分:0)

fluent.**已过时,我们可以使用此匹配注释来排除流利的日志:

    <match @FLUENT_LOG>
      @type null
    </match>