gpt4 book ai didi

config - Fluentd 配置文件,在 中获取文件名并将其作为标记传递给

转载 作者:行者123 更新时间:2023-12-04 14:25:42 25 4
gpt4 key购买 nike

我正在尝试为 fluentd + fluentd-s3-plugin 编写一个干净的配置文件并将其用于许多文件。

我想避免复制和粘贴每个 <source>每个 <match>对于每个文件,所以我想让它有点动态。到目前为止我所拥有的:

  <source>
@type tail
path /var/www/blabla/blabla/log/production.log
pos_file /var/www/blabla/blabla/log/production.log.pos
tag production-log
format /(?<time>.*)/
</source>


<match production-log>
@type s3

s3_bucket xxxx
s3_region xxxx

path "staging/%Y/%m/%d/#{Socket.gethostname}/"
s3_object_key_format "%{path}productionlog-%{time_slice}-#{Socket.gethostname}-%{index}.%{file_extension}"

# if you want to use ${tag} or %Y/%m/%d/ like syntax in path / s3_object_key_format,
# need to specify tag for ${tag} and time for %Y/%m/%d in <buffer> argument.
<buffer tag,time>
@type file
tag ${tag}
path /var/www/blabla/blabla/log/buffer/
timekey 3600 # (default 3600) 1 hour partition
timekey_wait 1m
timekey_use_utc true # use utc

</buffer>
<format>
@type json
</format>
</match>

如您所见,我多次使用production-log,所以我的问题是2:

如何使用 tag 中的文件名?

我如何在 s3_object_key_format 中使用这个传递的标签? (我知道有评论说明,但我不明白)

最佳答案

您是否能够解决上述问题?。您确实需要将标记字段传递给缓冲区,但无需在缓冲区内部使用。

这是适合我的工作配置。希望这会有所帮助,如果它还没有解决的话。我的不同源为标签字段发送不同的值,在 S3 下,我按标签字段创建单独的文件夹并将对象放在它们下面。

所以它会像(app1 和 app2 是标签)

mybucket-->topPrefix-->app1-->app.log

mybucket-->topPrefix-->app2-->app.log

<match>
@type s3

s3_bucket "mybucket"
path "topPrefix/${tag}"
s3_object_key_format "%{path}/%{time_slice}_#{Socket.gethostname}_%{index}.%{file_extension}"
include_time_key true
time_format "%Y-%m-%dT%H:%M:%S.%L"

<buffer tag,time>
@type file
path /fluentd/buffer/s3
timekey_wait 1m
timekey 1m
chunk_limit_size 64m
</buffer>
<format>
@type json
</format>
time_slice_format %Y%m%d%H%M
</match>

关于config - Fluentd 配置文件,在 <source> 中获取文件名并将其作为标记传递给 <match>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45363655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com