Grep

grep 过滤插件允许根据正则表达式模式匹配或排除特定记录。

配置参数

该插件支持如下配置参数:

Key Value Format Description
Regex FIELD REGEX 保留与正则表达式匹配的字段的记录
Exclude FIELD REGEX 排除与正则表达式匹配的字段的记录

快速开始

要开始过滤数据记录,您可以从命令行或通过配置文件运行过滤器。如下示例假定您有一个名为 lines.txt 的文件,其中包含以下内容:

  1. aaa
  2. aab
  3. bbb
  4. ccc
  5. ddd
  6. eee
  7. fff
  8. ggg

命令行

注意: 使用命令行模式时,需要特别注意正则表达式的正确性。建议使用配置文件。

如下命令将加载 tail 插件并读取 lines.txt 文件的内容。然后 grep 过滤器会将正则表达式规则应用于 log 字段(由 tail 插件创建),并且仅保留以 aa 开头的记录:

  1. $ bin/fluent-bit -i tail -p 'path=lines.txt' -F grep -p 'regex=log aa' -m '*' -o stdout

配置文件

  1. [INPUT]
  2. Name tail
  3. Path lines.txt
  4. [FILTER]
  5. Name grep
  6. Match *
  7. Regex log aa
  8. [OUTPUT]
  9. Name stdout
  10. Match *

该过滤器允许按顺序应用多个规则,您可以根据需要设置多个 RegexExclude 配置项。

嵌套字段示例

到目前为止,不支持嵌套字段。如果您有类似以下格式的记录:

  1. {
  2. "kubernetes": {
  3. "pod_name": "myapp-0",
  4. "namespace_name": "default",
  5. "pod_id": "216cd7ae-1c7e-11e8-bb40-000c298df552",
  6. "labels": {
  7. "app": "myapp"
  8. },
  9. "host": "minikube",
  10. "container_name": "myapp",
  11. "docker_id": "370face382c7603fdd309d8c6aaaf434fd98b92421ce7c7c8aafe7697d4aa362"
  12. }
  13. }

如果您想排除与给定嵌套字段(如 kubernetes.labels.app),则可以与 nest 过滤插件一起使用。如下是一个排除与 kubernetes.labels.app: myapp 匹配的记录的示例:

  1. [FILTER]
  2. Name nest
  3. Match *
  4. Operation lift
  5. Nested_under kubernetes
  6. [FILTER]
  7. Name nest
  8. Match *
  9. Operation lift
  10. Nested_under labels
  11. [FILTER]
  12. Name grep
  13. Match *
  14. Exclude app myapp