Ruby Fluentd-从日志文件名中的数据内部使用变量

Ruby Fluentd-从日志文件名中的数据内部使用变量,ruby,fluentd,Ruby,Fluentd,我是fluentd的新手,我不确定它是否能像我现在尝试的那样。我使用它从运行在同一台主机上的一大堆Docker容器中收集日志数据,因此经常讨论的“hostname”变量对我没有帮助。相反,我收到的日志数据包含一个字段“container\u name”。 现在我想要的是让Fluentd写一个名为“container\u name-id\u timestamp”的日志文件,但到目前为止,我尝试的方法都不起作用。我不知道如何从数据包中计算字段 我继续下去,把所有的东西都匹配成这样: <matc

我是fluentd的新手,我不确定它是否能像我现在尝试的那样。我使用它从运行在同一台主机上的一大堆Docker容器中收集日志数据,因此经常讨论的“hostname”变量对我没有帮助。相反,我收到的日志数据包含一个字段“container\u name”。 现在我想要的是让Fluentd写一个名为“container\u name-id\u 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>

但不是解释,而是字面意思。我错过了什么? 我也可以为每个容器设置子文件夹,我也有同样的问题


谢谢。

任何来这里寻找解决方案的人,我已经找到了解决方法:

<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>

类型重写\标记\过滤器
重写规则1容器名称^\/(.*)$tagged.$1
类型林
子类型文件
删除前缀服务
时间片格式%Y-%m-%d
path/var/log/fluentd/${tag}.*.log
发生了什么事

  • 查找匹配项,即docker.325435abcd-tag
  • 使用fluent_plugin_rewrite_tag_filter从数据中获取容器名称
  • 用容器名称重写标记
  • 匹配标记的数据
  • 使用forest_插件模板日志文件名以使用标记
  • 完成

  • 任何来这里寻找解决方案的人,我都知道如何做到:

    <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>
    
    
    类型重写\标记\过滤器
    重写规则1容器名称^\/(.*)$tagged.$1
    类型林
    子类型文件
    删除前缀服务
    时间片格式%Y-%m-%d
    path/var/log/fluentd/${tag}.*.log
    
    发生了什么事

  • 查找匹配项,即docker.325435abcd-tag
  • 使用fluent_plugin_rewrite_tag_filter从数据中获取容器名称
  • 用容器名称重写标记
  • 匹配标记的数据
  • 使用forest_插件模板日志文件名以使用标记
  • 完成

  • 任何来这里寻找解决方案的人,我都知道如何做到:

    <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>
    
    
    类型重写\标记\过滤器
    重写规则1容器名称^\/(.*)$tagged.$1
    类型林
    子类型文件
    删除前缀服务
    时间片格式%Y-%m-%d
    path/var/log/fluentd/${tag}.*.log
    
    发生了什么事

  • 查找匹配项,即docker.325435abcd-tag
  • 使用fluent_plugin_rewrite_tag_filter从数据中获取容器名称
  • 用容器名称重写标记
  • 匹配标记的数据
  • 使用forest_插件模板日志文件名以使用标记
  • 完成

  • 任何来这里寻找解决方案的人,我都知道如何做到:

    <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>
    
    
    类型重写\标记\过滤器
    重写规则1容器名称^\/(.*)$tagged.$1
    类型林
    子类型文件
    删除前缀服务
    时间片格式%Y-%m-%d
    path/var/log/fluentd/${tag}.*.log
    
    发生了什么事

  • 查找匹配项,即docker.325435abcd-tag
  • 使用fluent_plugin_rewrite_tag_filter从数据中获取容器名称
  • 用容器名称重写标记
  • 匹配标记的数据
  • 使用forest_插件模板日志文件名以使用标记
  • 完成