FluentD,如何仅对特定日志进行grep

时间:2019-08-14 02:34:21

标签: fluentd td-agent

2019/08/13 13:13:17 [DEBUG] Hello, world!
2019/08/13 13:13:17 [INFO] Ignore me
2019/08/13 13:13:17 [INFO] SPECIFIC_LOG :{"name": "mark"}

我喜欢上面的日志,我只需要grep包含“ SPECIFIC_LOG”的日志,而我想忽略其他日志。

我试图这样设置配置,

<source>
    @type tail
    path ./sample.log
    tag debug.sample
    <parse>
        @type regexp
        expression /\[\w+\] SPECIFIC_LOG\s:(?<message>.*)$/
    </parse>
</source>

<filter debug.**>
    @type parser
    key_name message
    format json
</filter>

它适用于带有模式的匹配日志,但是对于不匹配的日志,我得到警告,提示

#0 pattern not matched: "2019/08/13 13:13:17 [DEBUG] Hello, world!"

如何只对与模式匹配的日志进行grep处理,以便解决警告?

1 个答案:

答案 0 :(得分:0)

这只是警告,表示模式不匹配,我认为可以忽略。

要忽略此类警告,可以设置emit_invalid_record_to_error false选项。

<filter debug.**>
    @type parser
    key_name message
    format json
    emit_invalid_record_to_error false
</filter>

有关此标志的更多信息- https://docs.fluentd.org/filter/parser#emit_invalid_record_to_error

早期版本带有suppress_parse_error_log标志,现在已被emit_invalid_record_to_error取代。

suppress_parse_error_log丢失。有哪些替代方案?

从v1开始,parser过滤器不支持suppress_parse_error_log参数,因为解析器过滤器使用@ERROR功能而不是内部日志记录来挽救无效的记录。如果只想忽略无效记录,则将emit_invalid_record_to_error设置为false。 另请参见emit_invalid_record_to_error参数。