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

时间:2018-11-02 10:02:32

标签: elasticsearch kubernetes kibana fluent-bit

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

我还部署了Nginx Pod,在Kibana中也可以看到此Nginx Pod的日志。但是,所有日志数据都会发送到单个字段“ log”,如下所示。

enter image description here

如何将每个字段提取到一个单独的字段中。在这个问题上已经有流利的解决方案。 Kibana - How to extract fields from existing Kubernetes logs

但是我如何才能使用流利的钻头呢?

我尝试通过在Kubernetes的默认FILTER部分下添加一个FILTER部分来尝试以下操作,但这没有用。

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

从这个(https://github.com/fluent/fluent-bit/issues/723),我可以看到流利的位不支持grok。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

查看此配置图:

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