0

我想将标记匹配指令中的消息重新路由到非标记匹配指令。可能吗?

我编写了 td-agent.conf(图 1),但在rewrite-tag-filter插件中处理后,td-agent 不会将消息路由到第二个匹配指令(图 2,3)。

将第二个匹配指令放在标签中,并在 rewrite-tag-filter 插件(图 4)中附加标签,它可以工作。考虑到这种行为,我猜 td-agent 在@foo_server_local_error 标签中搜索匹配指令,因此该消息与未标记版本(图1)中的第二个匹配指令不匹配。

如果插件(或 td-agent 核心)提供了从标签路由到非标签匹配指令的方法,我的要求就满足了。

我也尝试了route plugin,但它的行为与 rewrite-tag-filter 插件相同。

我的 td-agent 和插件版本是:

'fluent-plugin-rewrite-tag-filter' version '2.4.0'
'fluentd' version '1.12.1'

图1:td-agent.conf

<match foo_server_local.**>
  @type copy
  <store>
    @type relabel
    @label @foo_server_local_error
  </store>
</match>

<label @foo_server_local_error>
  <filter>
    @type grep
    <regexp>
      key description
      pattern /(WARN|ERROR|FATAL|UNKNOWN)/i
    </regexp>
  </filter>
  <filter>
    @type record_transformer
    <record>
      host "#{Socket.gethostname}"
      environment "prod"
      level "ERROR"
    </record>
  </filter>
  <match foo_server_local.**>
    @type rewrite_tag_filter
    remove_tag_prefix foo_server_local
    <rule>
      key description
      pattern /.+/
      tag foo.server_local.message
    </rule>
  </match>
</label>

<match foo.**>
  @type stdout
</match>

图2:流利的猫命令

echo "ERROR: TEST ERROR MESSAGE" | /opt/td-agent/bin/fluent-cat -f none --message-key description foo_server_local.hoge

图 3:td-agent.log 的输出

2021-04-15 10:42:01 +0000 [warn]: #0 no patterns matched tag="foo.server_local.hoge"

图 4:修改 td-agent.conf

<label @foo_server_local_error>
...
  <match foo_server_local.**>
    @type rewrite_tag_filter
    remove_tag_prefix foo_server_local
    <rule>
      key description
      pattern /.+/
      tag foo.server_local.message
      @label @foo
    </rule>
  </match>
</label>

<label @foo>
  <match foo.**>
    @type stdout
  </match>
</label>
4

0 回答 0