您的位置:首页 >如何配置Filebeat的输入插件
发布于2026-05-02 阅读(0)
扫一扫,手机访问

要让Filebeat高效地采集数据,第一步就是正确配置输入插件。这就像给数据采集器装上合适的“探头”,不同的数据源需要不同的探头。下面,咱们就来拆解一下配置的核心要点。
Filebeat的输入配置,其骨架非常清晰。所有输入定义都放在 filebeat.inputs 这个数组下面,你可以同时配置多个输入源,互不干扰。每个输入都以 - type: <类型> 开头,常见的类型包括 filestream(处理文件,目前最推荐)、log(旧版文件输入,已不推荐)、stdin、tcp 以及 container(专门处理容器日志)。
无论选择哪种类型,有几个通用字段是绝大多数场景下都会用到的:
fields 对象下。一个典型的配置骨架长这样:
filebeat.inputs:
- type: filestream
paths:
- /var/log/*.log
fields:
app: nginx
fields_under_root: true
tags: [“prod”, “web”]
processors:
- add_fields:
fields:
env: prod
选对输入类型,事情就成功了一半。下面看看几种主流的选择。
/var/log/*.log 匹配单层目录,而 /data/**/*.log 则可以递归匹配所有子目录下的日志文件。filebeat.inputs:
- type: filestream
paths: [“/var/log/app/*.log”]
parsers:
- multiline:
type: count
count_lines: 3
- ndjson:
add_error_key: true
overwrite_keys: true
target: json_fields
filestream。filebeat.inputs:
- type: stdin
filebeat.inputs:
- type: tcp
host: “0.0.0.0:9000”
max_message_size: 10MiB
/data/docker/containers/*/*.log。filebeat.inputs:
- type: container
paths: [“/data/docker/containers/*/*.log”]
docker 这个输入类型从 7.2.0 版本起就已经被废弃了,现在统一使用 container 类型。数据采集进来,往往还需要“精加工”。行过滤和JSON解析就是两个最常用的工具。
[‘^ERR’, ‘^WARN’]。[‘^DBG’]。[‘.gz$’]。message 字段,可以将其自动解析成结构化的字段。关键选项有:
filebeat.inputs:
- type: filestream
paths: [“/var/log/app/*.json”]
parsers:
- ndjson:
add_error_key: true
overwrite_keys: true
target: json_data
json.keys_under_root: false
处理复杂日志格式是实际运维中的常见挑战,这里有两个典型场景的应对策略。
filestream.parsers.multiline 可以轻松搞定,常见策略有两种:
filebeat.inputs:
- type: filestream
paths: [“/var/log/app/stack.log”]
parsers:
- multiline:
type: count
count_lines: 5
filebeat.inputs:
- type: filestream
paths: [“/var/log/app/stack.log”]
parsers:
- multiline:
pattern: ‘^Caused by:’
negate: true
match: after
container 输入类型,并指定到容器日志的存储路径(例如 /data/docker/containers/*/*.log)即可。Filebeat 会自动识别常见的日志格式,并提取出有效的时间戳等信息。docker 类型,建议尽快迁移到 container 类型。配置写好了,怎么验证它是否按预期工作呢?这里有几个快速验证和调试的方法。
output.console:
pretty: true
filebeat -e -c filebeat.ymlfilebeat -e -c config/your.yamltype: tcp, host: “0.0.0.0:9000” 的 Filebeat。echo ‘hello filebeat’ | nc 127.0.0.1 9000type: filestream, paths: [“/tmp/test/*.log”] 的 Filebeat。echo ‘{“level”:“info”,“msg”:“start”}’ > /tmp/test/a.log
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9