先来看 Filebeat 安装步骤,这一步通常并不复杂。不同 Linux 发行版对应的安装命令略有区别,按系统选择执行即可。

- CentOS 用户:直接执行
sudo yum install filebeat -y即可完成安装。 - Ubuntu/Debian 用户:先运行
sudo apt update,再执行sudo apt install filebeat -y。
安装完成后,你可以在 /etc/filebeat/filebeat.yml 找到 Filebeat 的默认配置文件。
配置监控文件
接下来就是配置重点——指定 Filebeat 需要监控哪些日志文件。打开 filebeat.yml 这个核心配置文件后,主要需要调整的是 filebeat.inputs 部分。通过 paths 参数,可以明确设置要采集的文件路径或目录路径。
几种常见场景
- 监控单个文件:直接填写文件的绝对路径即可。例如要监控
/var/log/syslog:filebeat.inputs: - type: log enabled: true paths: - /var/log/syslog - 监控目录下所有.log文件:可以借助通配符
*来匹配多个日志文件。例如采集/var/log目录下所有.log文件:filebeat.inputs: - type: log enabled: true paths: - /var/log/*.log - 排除某些文件:如果目录中存在压缩日志或不需要采集的文件,可以使用
exclude_files参数进行过滤。例如排除所有.gz文件:filebeat.inputs: - type: log enabled: true paths: - /var/log/*.log exclude_files: ['\.gz$'] - 监控特定应用日志:对于业务系统日志,建议将路径写得更精确一些。例如监控
/opt/myapp/logs/app.log:filebeat.inputs: - type: log enabled: true paths: - /opt/myapp/logs/app.log
采集优化(可选但很实用)
在完成基础配置后,还可以根据实际日志采集需求做进一步优化,让 Filebeat 监控文件时更高效、更精准。
- 忽略过旧的日志:通过
ignore_older参数,可以跳过超过指定时间的旧日志(按小时计算),从而减少重复采集和资源占用。例如忽略72小时前的日志:filebeat.inputs: - type: log enabled: true paths: - /var/log/syslog ignore_older: 72h - 调整扫描频率:默认情况下,Filebeat 每10秒检查一次文件变化。如果日志写入频率较高,可以适当缩短,比如设置为5秒。通过
scan_frequency参数调整:filebeat.inputs: - type: log enabled: true paths: - /var/log/syslog scan_frequency: 5s - 添加自定义标签或字段:如果希望日志携带更多上下文信息,方便后续在 Elasticsearch 或 Logstash 中检索、过滤和分析,可以使用
tags或fields参数。例如添加 app 标签和生产环境字段:filebeat.inputs: - type: log enabled: true paths: - /opt/myapp/logs/app.log tags: ["myapp"] fields: env: production fields_under_root: true
配置输出目标
设置好输入源后,下一步就是指定日志输出到哪里。Filebeat 常见的输出目标主要是 Elasticsearch 和 Logstash。
如果输出目标是 Elasticsearch,配置示例如下:
output.elasticsearch:
hosts: ["localhost:9200"] # 替换为实际地址
index: "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}" # 动态生成日期索引
如果希望先把日志发送到 Logstash 做预处理,再进入后续链路,可以改成下面这样:
output.logstash:
hosts: ["logstash:5044"] # 替换为实际地址
启动并验证
完成配置后,就可以启动 Filebeat 并检查日志采集是否正常运行。
- 启动服务:
sudo systemctl start filebeat - 设置开机自启:
sudo systemctl enable filebeat - 检查状态:
sudo systemctl status filebeat,如果看到active (running),说明服务已经正常启动。 - 实时查看日志:
sudo journalctl -u filebeat -f,可用于排查运行报错或配置问题。 - 验证数据:如果输出到 Elasticsearch,可以执行
curl -X GET "localhost:9200/_cat/indices?v",查看是否出现filebeat-*索引。若已生成,通常说明 Filebeat 日志采集配置已经生效。
几点提醒
- 权限问题:这是配置 Filebeat 监控日志文件时最常见的问题之一。务必确保 Filebeat 进程对指定的日志文件或目录具备读取权限,必要时可通过
chown或chmod进行调整。 - inotify限制:如果需要监控的文件数量很多,可能会触发系统的 inotify 限制。可以编辑
/etc/sysctl.conf,加入fs.inotify.max_user_watches=524288,然后执行sudo sysctl -p使配置生效。 - 配置测试:正式启动之前,建议先使用
filebeat -e -c /etc/filebeat/filebeat.yml在前台运行一次,快速检查配置文件是否存在语法错误。
