可以实现实时监控
在 Ubuntu 上,Filebeat 通过持续“收割”新增日志行并发送到后端(如 Elasticsearch、Logstash),满足对日志的近实时采集与传输。其运行机制依赖 Input 持续扫描目录、Harvester 读取新增行、Spooler 批量发送,默认目录扫描间隔为 10 秒,因此通常能达到准实时效果。
快速验证步骤
- 安装并启动
- sudo apt-get update
- sudo apt-get install filebeat
- sudo systemctl start filebeat && sudo systemctl enable filebeat
- 配置采集路径(示例:系统日志)
- 编辑:sudo nano /etc/filebeat/filebeat.yml
- 片段:
- filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/syslog
- /var/log/auth.log
- 配置输出(二选一或并存)
- 输出到 Elasticsearch:
- output.elasticsearch:
- hosts: [“localhost:9200”]
- 输出到 Logstash:
- output.logstash:
- hosts: [“localhost:5044”]
- 检查运行状态与实时日志
- 运行状态:sudo systemctl status filebeat
- Filebeat 自身日志:sudo tail -f /var/log/filebeat/filebeat
- 若使用 systemd:sudo journalctl -u filebeat.service -f
- 在 Kibana 验证(如使用 ES)
- 访问 http://<kibana_host>:5601,创建索引模式 filebeat-*,在 Discover 中查看实时数据。
提升实时性的关键参数
- scan_frequency:目录扫描间隔,默认 10s,可适当缩短以更快发现新文件或轮转文件(注意资源占用)。
- close_inactive:文件无新内容后等待多久关闭 harvester,例如 1m,避免长期占用文件句柄。
- tail_files:对新发现的文件是否从末尾开始读取(适合从现有大文件尾部开始采集)。
- backoff / max_backoff / backoff_factor:控制行级读取退避与加速策略,平衡延迟与 CPU。
常见问题排查
- 权限不足:确保 Filebeat 对日志文件与目录具备读取权限(如使用 systemd 时配置 User= 或合适的文件 ACL)。
- 输出连通性:确认 Elasticsearch/Logstash 地址与端口可达;必要时在 filebeat.yml 中正确设置 hosts。
- 配置语法:修改后先执行 sudo filebeat test config -e 校验,再重启服务。
- 日志级别:需要排错时临时将 logging.level 调为 debug,观察 /var/log/filebeat/filebeat 或 journalctl 输出。