我有一项服务我正在尝试记录日志并将其发送到某些位置,具体取决于他们所指的内容。流利有意义。目前,我只是把所有东西都扔到了s3,这很好。但是我现在想要一个小的子集(以短语“ACTION:”开头的任何行)也被发送到mongo数据库。我仍然希望一切都发送到s3。
我这里有这个配置文件,当然不会起作用
<source>
@type forward
@id input
@label mainstream
port 24224
</source>
<label @mainstream>
<match foo.**>
@type copy
<store>
@type s3
...
</store>
<store>
@type rewrite_tag_filter
rewriterule1 log "^ACTION:" foo.bar
</store>
</match>
<match foo.bar>
@type mongo
...
</matc>
</label>
一旦我们到达第一个匹配标记,所有这些都将被收集和停止,rewrite_tag_filter
的正常行为似乎没有超过<store>
。
我尝试过的其他事情。
store
,使其使用两次。但是我不希望我的s3输出被拆分。我确定我所要求的并不是太疯狂。有没有人以前做过这样的事情?
答案 0 :(得分:2)
只需要小心重拍什么。如果你使用的东西将与上面的匹配相匹配,它就不会继续前进,所以它需要不同。在这种情况下,即使标记不同,因为我使用foo
启动它,它也不会移过<match foo.**>
。
<source>
@type forward
@id input
@label mainstream
port 24224
</source>
<label @mainstream>
<match foo.**>
@type copy
<store>
@type s3
...
</store>
<store>
@type rewrite_tag_filter
# Changed tag from foo.bar to this
rewriterule1 log "^ACTION:" totally.different.tag.name
</store>
</match>
# the new totally.different.tag.name won't get caught by the
# first <match foo.**> so it will actually reach this one
<match totally.different.tag.name>
@type mongo
...
</match>
</label>