Filebeat 能使用多个配置文件吗?
Filebeat 支持多配置文件:-c 指定主文件,用 filebeat.config.inputs / modules 的 glob 加载目录下的多个片段,或用 -c 与 --path.config 组合。本文给出目录拆分的标准做法。
可以。标准做法是把输入与模块拆成文件目录:主 filebeat.yml 里用 filebeat.config.inputs 的 glob 引入 inputs.d/*.yml,模块同理用 modules.d/*.yml——每个应用一个文件,互不干扰。
配置目录拆分
主配置 filebeat.yml:
filebeat.config.inputs:
enabled: true
path: ${path.config}/inputs.d/*.yml # 每个文件是 input 列表
reload.enabled: true # 新增文件自动加载
reload.period: 10s
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
output.elasticsearch:
hosts: ["es:9200"]
然后 inputs.d/nginx.yml、inputs.d/app.yml 各自独立:
# inputs.d/nginx.yml
- type: filestream
id: nginx-access
paths: [/var/log/nginx/access.log]
注意事项
- 每个片段文件里是列表(可以含多个 input),不是完整配置;
reload.enabled开启后新增/修改片段自动生效,删除片段后在后续重载周期停止对应输入,并非立即生效;这不会热更新主配置,模块热重载需另设filebeat.config.modules.reload.enabled;- 命令行
-c只能指定一个主文件——拆分靠的是主文件里的 glob 引入。
常见问题(FAQ)
Q:片段里能写 output 吗? 不能,input 片段只接受输入定义;输出必须写在主文件。
Q:两个 input 采同一文件会重复吗? 可能重复或产生状态冲突,应避免输入路径重叠;仅设置不同 id 不能消除重复采集。