如何将一个事件从一个匹配块转发到下一个匹配块?

时间:2015-10-13 19:10:38

标签: fluentd

我上周遇到了Fluentd。我一开始喜欢它(仍然这样),但似乎有一些漏洞阻止我使用它。

我正在尝试将我们的日志转发到两个不同的位置 - 一个用于存档的S3存储桶,以及一个用于使用kibana进行分析的Elasticsearch数据库。我查看了fluent-forest-plugin,但我发现由于this而无效。我尝试使用copy插件,但是我收到了这个错误:

[error]: config error file="/etc/td-agent/td-agent.conf" error="Other 's3' plugin already use same buffer_path: type = s3, buffer_path = /tmp/fluent-plugin-s3"

使用此配置

<source>
  type tail
  path /var/log/nginx/web__error.log
  pos_file /var/tmp/nginx_web__error.pos
  tag web__error
  format /^(?<time>[^ ]+ [^ ]+) \[(?<log_level>.*)\] (?<pid>\d*).(?<tid>[^:]*): (?<message>.*)$/
</source>
<match web__error>
  type copy
  <store>
    type s3
    aws_key_id ACC_KEY
    aws_sec_key SEC_KEY
    s3_bucket log-bucket
    path web__error/
    buffer_path /tmp/fluent-plugin-s3
    s3_object_key_format %{path}%{time_slice}_%{index}.%{file_extension}
    time_slice_format %Y-%m-%d/%H
    flush_interval 15s
    utc
  </store>
  <store>
    type elasticsearch
    logstash_format true
    logstash_prefix web__error
    flush_interval 15s
    include_tag_key true
    utc_index true
  </store>
</match>

根据我的阅读,一旦一个事件被一个匹配块捕获,它就不会被任何后续事件捕获。作为最后的手段,我需要知道是否有任何方法可以做到这一点,我还没有找到?

1 个答案:

答案 0 :(得分:0)

这不是问题 - 我忘了我在其他配置文件中使用了相同的buffer_path,这导致了这个错误。