首页 > 解决方案 > Fluentd 匹配标签通配符模式匹配下面的模式呢?

问题描述

在 Fluentd 配置文件中,我有这样的配置

<match a.b.**.stag>

在它下面还有另一个匹配标签,如下所示

<match a.b.c.d.**>

现在根据文档**将匹配零个或多个标签部分。但是,我有点怀疑第二个标签是否会被匹配,或者事件是否会被第一个标签<match>本身吞噬。我要确认的是第一个标签将匹配那些本来会匹配第二个事件的事件?第二个目标事件中match没有stag,但其余内容与第一个匹配标记目标事件相同。

标签: regexfluentd

解决方案


我要确认的是第一个标签将匹配那些本来会匹配第二个事件的事件?

这真的取决于输入,所以:不,通常情况并非如此。

+--------------+------------------------+-----------------------+
| Tag          | Matched by a.b.**.stag | Matched by a.b.c.d.** |
+--------------+------------------------+-----------------------+
| a.b.c.stag   | X                      |                       |
| a.b.c.d.stag | X                      | X                     |
| a.b.c.d.e    |                        | X                     |
| a.b.c.stag.e |                        |                       |
+--------------+------------------------+-----------------------+

不过,作为一般规则,在紧密匹配之后定义广泛匹配。

如果您需要一个匹配来排除不应被以下更紧密匹配接受的特定标签(例如,如果您不希望您的第二个匹配包含任何带有 的标签stag),请考虑使用模式列表:

<match a.b.c.stag a.b.d.stag>

或模式组合:

<match a.b.{c,d.*}.stag>

这些只是示例,因为我不知道所有可能标签的范围。


推荐阅读