Fluentd在输出日志的路径中加入时间

fluentd输出的日志,会按照path + time + “.log”的方式输出,参见。但是这只会使文件名加上名称,如果不断往这个路径中加入日志的话,那么产生的日志将会非常的多,所以需要在日志的路径中加入time。

思路是,首先使用record_reformer插件record中加入time,再使用rewrite_tag_filter插件record中提取time,放在tag中,再用forest插件放在路径中。

fluentd客户端配置文件

<source>
  type forward
  port 24224
  bind 0.0.0.0
</source>

# 把时间加入record,并且key为local_time
<match docker.**>
  type record_reformer
  tag reformed.${tag}
  local_time ${time.strftime('%Y-%m-%d-%H')}
</match>

# 按照source,添加tag
<match reformed.docker.**>
  type rewrite_tag_filter
  rewriterule1 source stdout system_out.${tag}
  rewriterule2 source stderr system_err.${tag}
</match>

# 把record中的local_time字段的value加在tag上面
<match system_err.**>
  type rewrite_tag_filter
  rewriterule1 local_time ^(.+)$ $1.${tag}
</match>

# 同上
<match system_out.**>
  type rewrite_tag_filter
  rewriterule1 local_time ^(.+)$ $1.${tag}
</match>

# 根据内容再加上不同的tag
<match *.system_err.**>
  type copy
  <store>
    type grep
    regexp1 log \s+200\s+
    add_tag_prefix program_200
  </store>
  <store>
    type grep
    regexp1 log \s+304\s+
    add_tag_prefix program_304
  </store>
  <store>
    type grep
    regexp1 log \s+404\s+
    add_tag_prefix program_404
  </store>
</match>

<match **>
    type forward
    <server>
      host 192.168.126.136
      port 24224
      weight 30
    </server>
    <server>
      host 192.168.126.137
      port 24224
      weight 30
    </server>
    flush_interval 5s
</match>

fluentd服务器端配置文件

如果只需要输出的日志有log字段,那么需要file输出格式下,即template中加上:
output_tag false
output_time false
message_key log
format single_value

# 从fluentd客户端传过来的log,其实time已经包含在tag中了,无论是放在路径中还是文件名中,都没问题
<source>
  type forward
  port 24224
  bind 0.0.0.0
</source>

<match *.system_out.reformed.docker.*.**>
  type forest
  subtype file
  <template>
    time_slice_format %Y%m%dT%H
    # 放在文件名中
    # path /home/lee/fluentd-log/${tag_parts[0]}/${tag_parts[5]}/${tag_parts[1]}.t3
    # 放在路径中
    path /home/lee/fluentd-log/${tag_parts[1]}/${tag_parts[0]}/${tag_parts[4]}/t3
    buffer_chunk_limit 256m
    buffer_queue_limit 128
    flush_interval 3m
    disable_retry_limit false
    retry_limit 17
    retry_wait 1s
  </template>
</match>

<match program_200.*.system_err.reformed.docker.*.**>
  type forest
  subtype file
  <template>
    time_slice_format %Y%m%dT%H
    path /home/lee/fluentd-log/${tag_parts[0]}/${tag_parts[1]}/${tag_parts[5]}/t3
    buffer_chunk_limit 256m
    buffer_queue_limit 128
    flush_interval 3m
    disable_retry_limit false
    retry_limit 17
    retry_wait 1s
  </template>
</match>

<match program_304.*.system_err.reformed.docker.*.**>
  type forest
  subtype file
  <template>
    time_slice_format %Y%m%dT%H
    path /home/lee/fluentd-log/${tag_parts[0]}/${tag_parts[1]}/${tag_parts[5]}/t3
    buffer_chunk_limit 256m
    buffer_queue_limit 128
    flush_interval 3m
    disable_retry_limit false
    retry_limit 17
    retry_wait 1s
  </template>
</match>

<match program_404.*.system_err.reformed.docker.*.**>
  type forest
  subtype file
  <template>
    time_slice_format %Y%m%dT%H
    path /home/lee/fluentd-log/${tag_parts[0]}/${tag_parts[1]}/${tag_parts[5]}/t3
    buffer_chunk_limit 256m
    buffer_queue_limit 128
    flush_interval 3m
    disable_retry_limit false
    retry_limit 17
    retry_wait 1s
  </template>
</match>

一个回复在 “Fluentd在输出日志的路径中加入时间

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部