1

我需要使用 fluent-bit 解析来自日志文件的特定消息并将其发送到文件。所有消息都应该发送到标准输出,并且每条包含特定字符串的消息都应该发送到一个文件。我已经设法使用具有以下配置的过滤器来做到这一点

[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 过滤器重写标签来实现的。

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

4

1 回答 1

2

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

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

解析器应该是这样的

[PARSER]
    Name myparser
    Format regex
    Regex ^(?<INT>[^ ]+) (?<FLOAT>[^ ]+) (?<BOOL>[^ ]+) (?<ALARMTEXT>.+)$

现在,如果我将这样的内容发送到输入文件:

echo "111 0.1 true user_temporarily_disabled" >> inputfile.log

它转到文件和输出。任何未解析的内容仅输出

于 2020-08-28T09:13:54.713 回答