【问题标题】:Fluentbit Kubernetes - How to extract fields from existing logsFluentbit Kubernetes - 如何从现有日志中提取字段
【发布时间】:2019-04-06 13:40:58
【问题描述】:

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

我也部署了 nginx pod,我也可以在 Kibana 中看到这个 nginx pod 的日志。但是所有的日志数据都被发送到一个单一的字段“log”,如下所示。

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

但是如何使用 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 支持。

【问题讨论】:

  • 你使用的是哪个解析器,?它应该适合某些解析器github.com/fluent/fluent-bit-kubernetes-logging/blob/master/…
  • 我正在使用与您的链接中相同的 kubernetes 过滤器,但我的应用程序日志被抽取到一个名为“log”的字段中,我想再做一个过滤器并从单个字段。

标签: elasticsearch kubernetes kibana fluent-bit


【解决方案1】:

看看这个配置图:

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

【讨论】:

【解决方案2】:

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

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

【讨论】:

  • 谢谢它正在工作.. 我之前阅读了文档,但之前没有理解其目的.. 可能是一篇简单的文章可能会在这方面对很多人有所帮助..
  • 链接现在是404了。
猜你喜欢
  • 1970-01-01
  • 2022-07-21
  • 1970-01-01
  • 1970-01-01
  • 2020-01-09
  • 1970-01-01
  • 1970-01-01
  • 2021-01-14
  • 2022-10-13
相关资源
最近更新 更多