fluent-bit 可以从一个文件中解析多种类型的日志行吗?

Can fluent-bit parse multiple types of log lines from one file?

我在 k8s 中有一个相当简单的 Apache 部署,使用 fluent-bit v1.5 作为日志转发器。我的设置与下面的回购协议中的设置几乎相同。我是 运行 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 以进行解析?

我是不是漏掉了什么?

谢谢!

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

注意 format none 因为最后一个选项意味着保持日志行原样,例如明文,如果没有别的办法的话。

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

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

记录在此处: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