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:
- https://github.com/fluent/fluentd-kubernetes-daemonset
- https://github.com/repeatedly/fluent-plugin-multi-format-parser#configuration
注意 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
我在 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:
- https://github.com/fluent/fluentd-kubernetes-daemonset
- https://github.com/repeatedly/fluent-plugin-multi-format-parser#configuration
注意 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