Filebeat:如何从路径创建新字段?
Filebeat: how to create new field from the path?
我想添加从将使用的路径中提取的新字段。我有两条路,见下文。
paths:
- /home/*/app/logs/*.log
# - /home/v209/app/logs/*.log
# - /home/v146/app/logs/*.log
fields:
campaign: v209
fields_under_root: true
我想创建新字段 campaign 仅使用 v209 或 v146 之类的文件夹名称任何想法,如何在 filebeads 中执行此操作?
提前致谢!
以下是使用 Filebeat 7.1.3 测试的三个建议解决方案
1) 每个输入活动字段的静态配置
filebeat.inputs:
- type: filestream
id: v209
paths:
- "/home/v209/app/logs/*.log"
fields:
campaign: v209
fields_under_root: true
- type: filestream
id: v146
paths:
- "/home/v146/app/logs/*.log"
fields:
campaign: v146
fields_under_root: true
output.console:
pretty: true
解释:这个解决方法很简单。每个文件输入都会有一个基于静态配置的字段集(活动)。
Pros/Cons:此选项存在每次添加新路径时都必须添加新的活动字段的问题。对于动态环境,这可能会带来严重的操作问题,但实施起来非常简单。
2) 从文件路径动态提取活动名称
processors:
- dissect:
tokenizer: "/%{key1}/%{campaign}/%{key3}/%{key4}/%{key5}"
field: "log.file.path"
target_prefix: ""
- drop_fields:
when:
has_fields: ['key1','key3','key4','key5']
fields: ['key1','key3','key4','key5']
说明:这些处理器在您的文件流或日志输入消息之上工作。解剖处理器将标记您的路径字符串并提取完整路径的每个元素。 drop_fields 处理器将删除所有不感兴趣的字段,只保留第二个路径元素(活动 ID)。
Pros/Cons:假设您的路径结构是稳定的,使用此解决方案,当新文件出现在 /home/*/app/logs/*.log
[ 下时,您无需执行任何操作=16=]
3) 编写脚本
如果您希望设置更自定义的解析逻辑,我建议您试用脚本处理器并按照您的方式进行修改,直到满足您的要求:
我想添加从将使用的路径中提取的新字段。我有两条路,见下文。
paths:
- /home/*/app/logs/*.log
# - /home/v209/app/logs/*.log
# - /home/v146/app/logs/*.log
fields:
campaign: v209
fields_under_root: true
我想创建新字段 campaign 仅使用 v209 或 v146 之类的文件夹名称任何想法,如何在 filebeads 中执行此操作?
提前致谢!
以下是使用 Filebeat 7.1.3 测试的三个建议解决方案
1) 每个输入活动字段的静态配置
filebeat.inputs: - type: filestream id: v209 paths: - "/home/v209/app/logs/*.log" fields: campaign: v209 fields_under_root: true - type: filestream id: v146 paths: - "/home/v146/app/logs/*.log" fields: campaign: v146 fields_under_root: true output.console: pretty: true
解释:这个解决方法很简单。每个文件输入都会有一个基于静态配置的字段集(活动)。
Pros/Cons:此选项存在每次添加新路径时都必须添加新的活动字段的问题。对于动态环境,这可能会带来严重的操作问题,但实施起来非常简单。
2) 从文件路径动态提取活动名称
processors: - dissect: tokenizer: "/%{key1}/%{campaign}/%{key3}/%{key4}/%{key5}" field: "log.file.path" target_prefix: "" - drop_fields: when: has_fields: ['key1','key3','key4','key5'] fields: ['key1','key3','key4','key5']
说明:这些处理器在您的文件流或日志输入消息之上工作。解剖处理器将标记您的路径字符串并提取完整路径的每个元素。 drop_fields 处理器将删除所有不感兴趣的字段,只保留第二个路径元素(活动 ID)。
Pros/Cons:假设您的路径结构是稳定的,使用此解决方案,当新文件出现在 /home/*/app/logs/*.log
[ 下时,您无需执行任何操作=16=]
3) 编写脚本
如果您希望设置更自定义的解析逻辑,我建议您试用脚本处理器并按照您的方式进行修改,直到满足您的要求: