Fluentbit Kubernetes - 如何从现有日志中提取字段

Fluentbit Kubernetes - How to extract fields from existing logs

我已经在我的 Kubernetes 集群上使用 Fluent-bit 配置了 EFK 堆栈。我可以在 Kibana 中看到日志。

我也部署了nginx pod,我在Kibana也能看到这个nginx pod的日志。但是所有日志数据都发送到单个字段 "log",如下所示。

如何将每个字段提取到一个单独的字段中。这个问题已经有一个流利的解决方案。

但是我怎样才能达到与 fluent-bit 相同的效果呢?

我已经通过在 Kubernetes 的默认 FILTER 部分下添加一个 FILTER 部分来尝试下面的方法,但它没有用。

[FILTER]
    Name                parser
    Match               kube.*
    Key_name            log
    Parser              nginx

从这个(https://github.com/fluent/fluent-bit/issues/723),我可以看出fluent-bit没有grok支持。

看看这个配置图:

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

nginx 解析器应该在那里:

[PARSER]
        Name   nginx
        Format regex
        Regex ^(?<remote>[^ ]*) (?<host>[^ ]*) (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^\"]*?)(?: +\S*)?)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)")?$
        Time_Key time
        Time_Format %d/%b/%Y:%H:%M:%S %z

在我们的 Kubernetes 过滤器官方文档中,我们有一个示例,说明如何让您的 Pod 根据注释为您的数据建议解析器:

https://docs.fluentbit.io/manual/filter/kubernetes