Ubuntu Filebeat支持的输入源类型及说明
Filebeat作为轻量级日志采集工具,其输入模块(filebeat.inputs)支持从多种来源收集数据,覆盖系统日志、应用日志、网络流量、容器环境等多种场景。以下是主要输入源类型及配置要点:
最常用的输入类型,用于采集本地或远程文件系统中的日志文件。支持通过通配符(如/var/log/*.log)指定路径,可配置多行日志合并(multiline)、排除特定文件(exclude_files)、忽略旧文件(ignore_older)等功能。
示例配置:
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/syslog
- /var/log/nginx/*.log
multiline.pattern: '^\[' # 匹配以'['开头的行(如Java异常堆栈)
multiline.negate: true # 反转匹配(即不匹配的行作为新日志开始)
multiline.match: after # 将后续行追加到前一行之后
用于测试或临时数据采集,直接从终端读取输入内容。常用于验证Filebeat配置是否正常。
示例配置:
filebeat.inputs:
- type: stdin
enabled: true
通过网络接收日志数据,支持TCP(可靠传输)和UDP(快速传输)协议。适用于收集远程服务器、网络设备的日志。
示例配置(TCP):
filebeat.inputs:
- type: tcp
enabled: true
host: "0.0.0.0:9000" # 监听所有IP的9000端口
专门采集Syslog协议的日志(如Ubuntu系统日志/var/log/syslog),支持UDP(默认端口514)和TCP传输。
示例配置:
filebeat.inputs:
- type: syslog
enabled: true
host: "0.0.0.0:514"
用于采集Docker容器的日志,自动读取容器日志文件(默认路径/var/lib/docker/containers/*/*.log)。支持解析容器元数据(如容器ID、名称)。
示例配置:
filebeat.inputs:
- type: docker
enabled: true
containers.ids: "*" # 采集所有容器日志
json.keys_under_root: true # 将JSON日志字段提升到根层级
针对Kubernetes环境设计,自动发现集群中的Pod日志,支持基于标签(Labels)过滤Pod。日志默认从/var/log/containers/*.log读取,包含Pod名称、命名空间等元数据。
示例配置(通过模块启用):
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
filebeat.modules:
- module: kubernetes
enabled: true
pods:
enabled: true
从Kafka集群消费日志数据,支持指定Topic、Broker地址、消费者组等参数。适用于分布式日志收集场景。
示例配置:
filebeat.inputs:
- type: kafka
enabled: true
brokers: ["kafka1:9092", "kafka2:9092"]
topics: ["app-logs"]
group_id: "filebeat-consumer-group"
Filebeat提供多个预定义模块(如system、nginx、mysql),封装了常见服务的日志路径、解析规则和输出模板。启用模块后无需手动配置paths和multiline,简化了复杂场景的配置。
示例配置(启用System模块):
filebeat.modules:
- module: system
enabled: true
period: 1h # 每小时采集一次系统日志
以上输入源类型覆盖了大多数日志采集场景,用户可根据实际需求组合配置(如同时采集系统日志、Nginx日志和Kafka数据)。配置文件默认位于/etc/filebeat/filebeat.yml,修改后需重启Filebeat服务生效。