【问题标题】:Can fluent-bit parse multiple types of log lines from one file?fluent-bit 可以从一个文件中解析多种类型的日志行吗?
【发布时间】:2020-10-08 19:54:15
【问题描述】:

我在 k8s 中有一个相当简单的 Apache 部署,使用 fluent-bit v1.5 作为日志转发器。我的设置几乎与下面 repo 中的设置相同。我正在运行 AWS EKS 并将日志输出到 AWS ElasticSearch Service。

https://github.com/fluent/fluent-bit-kubernetes-logging

ConfigMap 在这里:https://github.com/fluent/fluent-bit-kubernetes-logging/blob/master/output/elasticsearch/fluent-bit-configmap.yaml

Apache 访问 (-> /dev/stdout) 和错误 (-> /dev/stderr) 日志行都在节点上的同一个容器日志文件中。 我遇到的问题是 fluent-bit 似乎没有自动检测要使用哪个解析器,我不确定它是否应该,我们只能在部署的注释部分指定一个解析器,我已经指定了 apache . 所以最后,写入同一个文件但来自 stderr 的错误日志行不会被解析。 我应该将日志从 fluent-bit 发送到 fluentd 以处理错误文件,假设 fluentd 可以处理这个问题,还是应该以某种方式仅将错误行泵回 fluent-bit 进行解析?

我错过了什么吗?

谢谢!

【问题讨论】:

    标签: fluentd fluent-bit


    【解决方案1】:

    通过使用 FluentBit FILTER 和“解析器”插件(名称),我能够将第二个(和第三个)解析器应用于日志,如下所示。

    在此处记录:https://docs.fluentbit.io/manual/pipeline/filters/parser

    [FILTER]
        Name            parser
        Match           kube.*
        Parser          apache_error_custom
        Parser          apache_error
        Preserve_Key    On
        Reserve_Data    On
        Key_Name        log
    

    【讨论】:

      【解决方案2】:

      对于 FluentBit 没有看到这个,但是对于 Fluentd:

      注意format none 作为最后一个选项意味着保持日志行不变,例如纯文本,如果没有其他方法。

      您也可以将 FluentBit 用作纯日志收集器,然后使用 Fluentd 进行单独的部署,从 FluentBit 接收流、解析并执行所有输出。在这种情况下,在 FluentBit 输出中使用 type forward,在 Fluentd 中使用 @type forward。文档:https://docs.fluentbit.io/manual/pipeline/outputs/forward

      【讨论】:

        猜你喜欢
        • 2020-11-08
        • 1970-01-01
        • 1970-01-01
        • 2022-08-19
        • 2015-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-21
        相关资源
        最近更新 更多