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  *该过滤器允许按顺序应用多个规则,您可以根据需要设置多个 Regex 和 Exclude 配置项。
嵌套字段示例
到目前为止,不支持嵌套字段。如果您有类似以下格式的记录:
{
    "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 myappLast updated
Was this helpful?