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支持。
看看这个配置图:
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 根据注释为您的数据建议解析器:
我已经在我的 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支持。
看看这个配置图:
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 根据注释为您的数据建议解析器: