我想将我的保险柜日志发送到s3。基于这个issue,我这样做了:
/router/index.js
我希望每30分钟将日志发送到S3,并在目录中将其格式化为## 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>
实际上,我的日志平均每2到3分钟发送一次,并且S3中的输出时间格式从纪元开始,即:logs/2019/05/01/1030
(时间已在我的系统上正确设置)
答案 0 :(得分:1)
这是示例配置,对我来说效果很好。
您需要确保将time
传递到缓冲区部分,并尝试提供应明确显示的format
类型。
通过检查代理启动日志来检查您的匹配表达式是否工作正常。另外,请尝试使用<match s3.**>
<match>
@type s3
s3_bucket somebucket
s3_region "us-east-1"
path "logs/%Y/%m/%d/%H"
s3_object_key_format "%{path}/%{time_slice}_%{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 5m
timekey 30m
chunk_limit_size 64m
flush_at_shutdown true
total_limit_size 256m
overflow_action block
</buffer>
<format>
@type json
</format>
time_slice_format %Y%m%d%H%M%S
</match>