可以实现近实时日志采集与转发
Ubuntu 上的 Filebeat 通过持续监听日志文件的新增内容,将事件快速发送到 Elasticsearch、Logstash 或 Kafka,满足运维与安全场景下的近实时监控需求。其工作机制依赖 Input 对目录变更进行扫描、Harvester 读取新增行、以及内部队列将事件批量发送,从而实现低延迟的数据管道。
快速配置示例
- 安装 Filebeat
- sudo apt-get update
- sudo apt-get install filebeat
- 编辑配置 /etc/filebeat/filebeat.yml
- 采集系统日志
- filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/syslog
- /var/log/auth.log
- 输出到 Elasticsearch(示例)
- output.elasticsearch:
- hosts: [“localhost:9200”]
- index: “filebeat-%{[agent.version]}-%{+yyyy.MM.dd}”
- 或输出到 Logstash(示例)
- output.logstash:
- hosts: [“localhost:5044”]
- 启动与开机自启
- sudo systemctl start filebeat
- sudo systemctl enable filebeat
- 验证
- sudo systemctl status filebeat
- tail -f /var/log/filebeat/filebeat
提升实时性的关键参数
- scan_frequency:目录扫描间隔,默认 10 秒;可适当缩短以降低发现新日志的延迟(注意资源占用)。
- close_inactive:文件无新内容后等待多久关闭 harvester,如 1m,有助于及时释放句柄。
- backoff / max_backoff / backoff_factor:控制行级读取退避与加速策略,平衡延迟与 CPU。
- tail_files:对新发现的文件是否从末尾开始读取,适合“只追新日志”的场景。
- ignore_older:忽略超过指定时间的历史文件,如 72h,减少无效扫描。
验证与可视化
- 查看服务与日志
- sudo systemctl status filebeat
- tail -f /var/log/filebeat/filebeat
- 在 Kibana 实时查看
- 访问 http://<kibana_host>:5601
- 创建索引模式匹配 filebeat-*
- 在 Discover 中观察近实时日志流。