首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用fluent bit解析特定消息并将其发送到不同的输出

如何使用fluent bit解析特定消息并将其发送到不同的输出
EN

Stack Overflow用户
提问于 2020-08-28 02:09:14
回答 1查看 1.4K关注 0票数 1

我需要使用fluent-bit解析日志文件中的特定消息,并将其发送到文件。所有消息都应该发送到stdout,并且每个包含特定字符串的消息都应该发送到一个文件。我已经用如下配置的过滤器做到了这一点

代码语言:javascript
复制
[SERVICE]
    Flush     1
    Log_Level info

[INPUT]
    Name        tail
    Path        inputfile.log
    Tag         test_tag

[FILTER]
    Name          rewrite_tag
    Match         test_tag
    Rule          $log (user_temporarily_disabled)  from.$TAG.new true
    Emitter_Name  re_emitted

[OUTPUT]
    Name   stdout
    Match  test_tag

[OUTPUT]
    Name file
    Match from.*
    File myoutput.log

使用下面的配置,每当我向输入文件发送一行时,它都会转到标准输出,如果该行包含"user_temporarily_disabled“字符串,它就会转到文件。这是通过使用rewrite_tag过滤器重写标记来实现的。

我需要更多的是解析消息并将其重写为新的形式。我曾尝试添加一个解析器,但没有成功

EN

回答 1

Stack Overflow用户

发布于 2020-08-28 17:13:55

好的,我花了一段时间才找到的

代码语言:javascript
复制
[SERVICE]
    Parsers_File parserFile.conf

[INPUT]
    Name        tail
    Path        inputfile.log
    Tag         inputtag

#first filter to redirect to parser
[FILTER]
    Name parser
    Match inputtag*
    Key_Name log
    Parser myparser

#second filter to rewrite tag after parser
[FILTER]
    Name          rewrite_tag
    Match         *
    Rule          $ALARMTEXT (user_temporarily_disabled)  newtag true
    Emitter_Name  re_emitted

[OUTPUT]
    Name file
    Match newtag*
    File output.log

[OUTPUT]
    Name stdout
    Match *

解析器应该是这样的

代码语言:javascript
复制
[PARSER]
    Name myparser
    Format regex
    Regex ^(?<INT>[^ ]+) (?<FLOAT>[^ ]+) (?<BOOL>[^ ]+) (?<ALARMTEXT>.+)$

现在,如果我向输入文件发送类似这样的内容:

代码语言:javascript
复制
echo "111 0.1 true user_temporarily_disabled" >> inputfile.log

它转到文件和输出。任何未解析的内容都只会被输出

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63621898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档