过滤原生处理插件
简介
processor_filter_regex_native插件根据事件字段内容来过滤事件。
版本
版本说明
- 推荐版本:iLogtail v2.0.4 及以上
配置参数
| 参数 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Type | string | 是 | / | 插件类型。固定为processor_filter_regex_native。 |
| ConditionExp | object | 否 | / | **实验功能!**条件表达式,高优先级,存在时将忽略下列参数。格式形如:{"operator":"and","operands":[{"key":"k1","type":"regex","exp":"v1"},{"key":"k2","type":"regex","exp":"v2"}]}。支持 not/and/or 与 regex。 |
| FilterKey | []string | 是 | / | 过滤字段名,需配套FilterRegex参数使用,表示如果当前事件要被采集,则key指定的字段内容所需要满足的条件。多个条件之间为“且”的关系,仅当所有条件均满足时,该条日志才会被采集。 |
| FilterRegex | []string | 是 | / | 与FilterKey对应的过滤正则表达式。必须与FilterKey长度相同。 |
| Include | map[string]string | 否 | / | FilterKey与FilterRegex另一种写法,键为字段名,值为正则表达式。 |
| DiscardingNonUTF8 | bool | 否 | false | 是否将字段中的非 UTF-8 字节替换为空格(键与值都会检查)。 |
样例
采集文件/home/test-log/reg.log,通过正则表达式解析日志内容并提取字段,然后只采集method为POST或PUT且状态码为200的日志,并将结果输出到stdout。
- 输入
127.0.0.1 - - [07/Jul/2022:10:43:30 +0800] "POST /PutData?Category=YunOsAccountOpLog" 0.024 18204 200 37 "-" "aliyun-sdk-java"
127.0.0.1 - - [07/Jul/2022:10:44:30 +0800] "Get /PutData?Category=YunOsAccountOpLog" 0.024 18204 200 37 "-" "aliyun-sdk-java"
- 采集配置
enable: true
inputs:
- Type: input_file
FilePaths:
- /home/test-log/reg.log
processors:
- Type: processor_parse_regex_native
SourceKey: content
Regex: ([\d\.]+) \S+ \S+ \[(\S+) \S+\] \"(\w+) ([^\\"]*)\" ([\d\.]+) (\d+) (\d+) (\d+|-) \"([^\\"]*)\" \"([^\\"]*)\"
Keys:
- ip
- time
- method
- url
- request_time
- request_length
- status
- length
- ref_url
- browser
- Type: processor_filter_regex_native
FilterKey:
- method
- status
FilterRegex:
- ^(POST|PUT)$
- ^200$
flushers:
- Type: flusher_stdout
OnlyStdout: true
- 输出
{
"__tag__:__path__": "/home/test-log/reg.log",
"ip": "127.0.0.1",
"time": "07/Jul/2022:10:43:30",
"method": "POST",
"url": "/PutData?Category=YunOsAccountOpLog",
"request_time": "0.024",
"request_length": "18204",
"status": "200",
"length": "37",
"ref_url": "-",
"browser": "aliyun-sdk-java",
"__time__": "1657161810"
}