3

我在 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 进行解析?

我错过了什么吗?

谢谢!

4

2 回答 2

3

通过使用带有“解析器”插件(名称)的 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
于 2020-10-10T17:02:44.180 回答
1

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

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

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

于 2020-10-09T14:50:32.370 回答