我很流利,我不确定它是否可以做我现在正在尝试的事情。我正在使用它来收集在同一主机上运行的一大堆Docker容器中的日志数据,因此经常讨论的"主机名" -variable对我没有帮助。相反,我收到的日志数据包括一个字段" container_name"。 现在我想要的是让Fluentd写一个名为" container_name-id_timestamp"的日志文件。但到目前为止,我所尝试的方式都没有奏效。我不知道如何评估数据包中的字段。
我继续前进并匹配这样的一切:
<match *.**>
type file
path /var/log/fluent/
time_slice_format %Y-%m-%d
time_slice_wait 10m
time_format %Y-%m-%dT-%H-%M-%S-%z
</match>
然后尝试各种变量,如
path /var/log/fluent/${container_name}_%Y-%m-%d
或
path /var/log/fluent/${tag_parts[2]}_%Y-%m-%d
但不是解释它而是文字。我错过了什么? 我对每个容器的子文件夹也没问题,我遇到了同样的问题。
谢谢。
答案 0 :(得分:1)
任何人来这里寻找解决方案,我都知道该怎么做:
<match docker.*>
type rewrite_tag_filter
rewriterule1 container_name ^\/(.*)$ tagged.$1
</match>
<match tagged.*>
type forest
subtype file
remove_prefix service
<template>
time_slice_format %Y-%m-%d
path /var/log/fluentd/${tag}.*.log
</template>
</match>
发生了什么事?