Grep

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

配置参数

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

Key

Value Format

Description

Regex

FIELD REGEX

保留与正则表达式匹配的字段的记录

Exclude

FIELD REGEX

排除与正则表达式匹配的字段的记录

快速开始

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

aaa
aab
bbb
ccc
ddd
eee
fff
ggg

命令行

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

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

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

配置文件

[INPUT]
    Name   tail
    Path   lines.txt

[FILTER]
    Name   grep
    Match  *
    Regex  log aa

[OUTPUT]
    Name   stdout
    Match  *

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

嵌套字段示例

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

{
    "kubernetes": {
        "pod_name": "myapp-0",
        "namespace_name": "default",
        "pod_id": "216cd7ae-1c7e-11e8-bb40-000c298df552",
        "labels": {
            "app": "myapp"
        },
        "host": "minikube",
        "container_name": "myapp",
        "docker_id": "370face382c7603fdd309d8c6aaaf434fd98b92421ce7c7c8aafe7697d4aa362"
    }
}

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

[FILTER]
    Name         nest
    Match        *
    Operation    lift
    Nested_under kubernetes

[FILTER]
    Name         nest
    Match        *
    Operation    lift
    Nested_under labels

[FILTER]
    Name    grep
    Match   *
    Exclude app myapp

Last updated