Filebeat 采集配置是什么
Filebeat 通过 inputs 声明要采集的文件或日志源,并配置字段富化、多行合并与输出目标。它以轻量著称:记录读取位置(registry)保证重启后不重复采集,是日志平台上最常用的边车(sidecar)采集器。先 test config 再启动,是它稳定运行的基本功。
基本信息
| 配置文件 | /etc/filebeat/filebeat.yml |
|---|---|
| 输入类型 | filestream(7.16+;旧版为 log) |
| 采集位置 | 记录在 registry 中,重启续采 |
| 字段富化 | fields + fields_under_root |
| 输出目标 | elasticsearch / logstash / kafka |
| 校验命令 | filebeat test config / test output |
典型使用场景
- 采集应用日志目录下的 .log 文件并送到 Elasticsearch
- 给不同来源的日志加 service、env 字段,便于后续过滤
- 用 multiline 合并 Java 异常堆栈,保证一条日志完整
- 先送到 Logstash 做解析,再由 Logstash 写入 ES
- 用 processors 做字段裁剪与 drop,控制入库数据量
- 配合容器日志路径采集 Pod 的标准输出
filebeat.yml 示例
filebeat.yml 示例
filebeat.inputs:
- type: filestream # 7.16+ 推荐类型(旧版为 log)
paths:
- /var/log/app/*.log
fields:
service: api # 自定义维度字段
fields_under_root: true # 让字段置于顶层而非 fields.*
multiline: # 合并异常堆栈
pattern: '^[0-9]{4}-'
negate: true
match: after
output.elasticsearch:
hosts: ["http://es:9200"]
index: "filebeat-%{+yyyy.MM.dd}"校验与运行
校验与运行
filebeat test config -c /etc/filebeat/filebeat.yml # 配置语法
filebeat test output # 输出连通性
filebeat -e -c /etc/filebeat/filebeat.yml # 前台带日志运行关键配置项
| 配置项 | 作用 | 说明 |
|---|---|---|
| paths | 采集路径 | 支持通配,避免匹配到轮转文件 |
| fields | 附加字段 | 加服务、环境等维度 |
| fields_under_root | 字段位置 | true 时置于顶层 |
| multiline | 多行合并 | 堆栈日志必备 |
| processors | 行级处理 | 裁剪、脱敏、drop |
| output.* | 输出目标 | 只启用一个主输出 |
fields 默认挂在 fields.* 下,fields_under_root: true 后置于顶层,便于后续按字段过滤与做索引路由。
registry 文件记录每个文件的读取偏移,不要随意删除;删除会导致重启后从头重采,产生大量重复日志。
multiline 的 pattern 与 negate 组合决定合并规则:常见做法是以时间戳开头为新行、其余行追加到上一行之后。
旧版 Filebeat 用 type: log 与 filebeat.prospectors,升级到 7.16+ 后应迁移为 filestream 输入,两者配置键并不完全兼容。