【发布时间】:2019-05-07 15:17:02
【问题描述】:
我想将我的 Vault 日志发送到 s3。基于此issue 我这样做了:
## vault input
<source>
@type tail
path /var/log/vault_audit.log
pos_file /var/log/td-agent/vault.audit_log.pos
<parse>
@type json
</parse>
tag s3.vault.audit
</source>
## s3 output
<match s3.*.*>
@type s3
s3_bucket vault
path logs/
<buffer time>
@type file
path /var/log/td-agent/s3
timekey 30m
timekey_wait 5m
chunk_limit_size 256m
</buffer>
time_slice_format %Y/%m/%d/%H%M
</match>
我希望我的日志每 30 分钟发送一次到 S3,并在目录中格式化为:logs/2019/05/01/1030
相反,我的日志平均每 2-3 分钟发送一次,并且 S3 中的输出时间格式从纪元开始,即:logs/1970/01/01/0030_0.gz
(时间在我的系统上设置正确)
【问题讨论】:
-
您需要将
time传递给缓冲区部分。<buffer time>。你可以试试这个,让我知道它是否解决了它?。 -
@Imran 感谢您的帮助。不幸的是,添加
time并没有帮助,我添加了<buffer time>并重新启动了代理。我已更新问题以反映您建议的配置 -
@Imran FluentD 似乎也从我的 JSON 日志中删除了
time键。这可能与问题有关吗?即:{"time": "2019-05-07T17:50:13.301850515Z", "data": {}}以{"data": {}}的身份登录到 S3,这真是出乎意料。 -
尝试在匹配中添加
include_time_key true(在path logs/之后),看看它是否有效。 -
如果您的日志根本没有到达 S3,请检查您的
match模式是否正常工作,并且代理用户是否有权限来跟踪文件。另外,请检查我的示例工作配置。