Filebeat 能使用多个配置文件吗?
Filebeat 支持多配置文件:--config 指定主文件,用 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: 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开启后新增/修改片段自动生效,删文件即停止采集;- 命令行
-c只能指定一个主文件——拆分靠的是主文件里的 glob 引入。
观测云对照
观测云 DataKit 的采集配置天然是多文件结构:conf.d 目录下每个采集器一个 conf 文件,放入即生效,且支持控制台统一下发管理。
常见问题(FAQ)
Q:片段里能写 output 吗? 不能,input 片段只接受输入定义;输出必须写在主文件。
Q:两个 input 采同一文件会重复吗? 会,各自维护 offset——给不同 id 并确认这是你想要的行为。