谈到日志采集,Filebeat 堪称轻量化日志采集工具的“标配”。其核心逻辑十分简单:通过输入配置告诉它“从哪里读取日志”,再通过输出配置指定“将日志发送到何处”。整个流程从源服务器出发,最终将数据传输至 Elasticsearch、Logstash 等目标系统。下面我们逐步拆解配置细节与关键注意事项。

1. 安装 Filebeat
安装方式依据操作系统而定,这里以 CentOS 和 Debian 系为例——仅需两条命令即可完成。
- CentOS:首先添加 Elastic 官方仓库,再通过 YUM 进行安装。命令如下:
sudo yum install epel-release -y echo "[elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md" | sudo tee -a /etc/yum.repos.d/elasticsearch.repo sudo yum install filebeat -y - Debian:使用 APT 直接安装,简洁明了:
sudo apt update sudo apt install filebeat -y
安装完成后,默认配置文件位于 /etc/filebeat/filebeat.yml,后续所有调整都需与此文件打交道。
2. 配置日志输入源
编辑 filebeat.yml,找到 filebeat.inputs 区域,定义需要收集的日志文件。常用配置项包括:
type:输入类型,采集文本日志时填写log;enabled:设为true方可激活;paths:日志路径,支持通配符(例如/var/log/*.log可匹配目录下所有 .log 文件)。
实际配置示例如下:
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/syslog # 采集系统日志
- /var/log/nginx/*.log # 采集 Nginx 日志目录下的所有 .log 文件
这里有项实用技巧:路径应尽量精确,避免误采集无关文件,从而影响性能。
3. 配置日志转发输出
Filebeat 支持多种输出目标,最常用的两种方案,根据实际场景选择其一即可。
① 直接转发至 Elasticsearch
若无需复杂的数据处理(例如日志解析、字段过滤),直接发送至 Elasticsearch 最为便捷。配置要点包括:
hosts:Elasticsearch 服务器地址,支持多节点(如["es-node1:9200", "es-node2:9200"]);index:索引命名模板,可使用占位符动态生成,例如filebeat-%{[agent.version]}-%{+yyyy.MM.dd}将按 Filebeat 版本和日期创建索引。
配置示例:
output.elasticsearch:
hosts: ["localhost:9200"]
index: "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}"
若 Elasticsearch 启用了安全认证(如 X-Pack),需补充用户名与密码:
output.elasticsearch:
hosts: ["localhost:9200"]
username: "elastic" # 替换为你的实际用户名
password: "your_password" # 替换为你的实际密码
② 转发至 Logstash(复杂场景推荐)
当需要对日志进行解析、过滤(如字段提取、时间戳格式化)时,先将日志发送至 Logstash 更为灵活。主要配置项包括:
hosts:Logstash 服务器地址,默认端口为5044;ssl.certificate_authorities:若 Logstash 启用了 SSL 加密,需指定 CA 证书路径。
配置示例:
output.logstash:
hosts: ["localhost:5044"]
ssl.certificate_authorities: ["/etc/filebeat/certs/ca.crt"] # 若启用SSL
相应地,Logstash 端需配置 beats 输入插件、grok 过滤器及 elasticsearch 输出插件——这部分属另一主题,后续可单独探讨。
4. 启动与验证服务
配置完成后,即可启动服务。常用命令如下:
- 启动服务:
sudo systemctl start filebeat sudo systemctl enable filebeat # 设置开机自启 - 检查运行状态:
sudo systemctl status filebeat - 实时查看 Filebeat 日志(排查错误的有效手段):
sudo journalctl -u filebeat -f - 验证数据是否到达目标:
- 若输出至 Elasticsearch,使用
curl查询索引:
若看到curl -X GET "localhost:9200/_cat/indices?v&pretty"filebeat-*开头的索引,则表明数据已成功写入。 - 若输出至 Logstash,直接查看 Logstash 日志:
sudo tail -f /var/log/logstash/logstash-plain.log
- 若输出至 Elasticsearch,使用
此步骤最关键之处在于“日志无报错”且“目标端有数据”——两者缺一不可。
5. 高级配置(可选)
除基础功能外,Filebeat 还提供若干进阶选项,可按需启用:
- SSL/TLS 加密:若日志传输需加密(如跨公网),配置 SSL 证书即可,安全性显著提升。
- 多行日志合并:Java 异常堆栈等跨行日志,Filebeat 默认会拆分为多条记录,此时需使用
multiline配置将其合并为一条。示例:
这样异常堆栈即可完整保留。filebeat.inputs: - type: log enabled: true paths: - /var/log/ja va-app/*.log multiline.pattern: '^\[' # 匹配行首的“[” multiline.negate: true multiline.match: after # 将匹配行之后的内容合并到上一行
通过上述步骤,Filebeat 即可稳定地从源头采集日志并转发至目标。实际部署时,可根据日志量的大小、是否需要预处理、安全要求等因素,灵活调整输入路径和输出目标。没有放之四海而皆准的配置,但核心理念始终是“读、发、验、调”四字诀。
