可以实现跨平台部署
Filebeat 是用 Go 实现的轻量级日志采集器,提供 Linux(DEB/RPM 与通用压缩包)、Windows(ZIP 与 MSI/服务脚本)、macOS 等多平台发行包,能够在异构系统上统一采集并输出到 Elasticsearch、Logstash、Kafka 等目标。实际生产中也常把 Ubuntu 上的 Filebeat 与其他系统一并部署,统一汇聚到中心集群处理。
部署与运维要点
- 安装包与平台
- Ubuntu/Debian:使用 DEB 包(如 filebeat-*.deb),也可用 tar.gz 通用包;
- RHEL/CentOS:使用 RPM 包;
- Windows:使用 ZIP,并通过脚本安装为 Windows 服务;
- 目录规范(DEB/RPM 常见):配置 /etc/filebeat/,数据 /var/lib/filebeat/,模块 /usr/share/filebeat/modules/。
- 配置与运行
- 核心配置文件为 filebeat.yml,常用命令:测试配置 filebeat test config -c filebeat.yml -e,前台运行 filebeat -e -c filebeat.yml;
- Ubuntu 推荐以 systemd 托管:ExecStart=/usr/bin/filebeat -e -c /etc/filebeat/filebeat.yml,设置开机自启 systemctl enable --now filebeat;
- Windows 以管理员 PowerShell 执行脚本安装服务:PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-filebeat.ps1,然后用 Start-Service filebeat 启动。
- 常见输出
- 输出到 Logstash(端口如 5044)、Elasticsearch(HTTP 端口如 9200)、或 Kafka(如 9092),多主机可用数组形式配置 hosts 实现负载与容错。
跨平台一致性与版本策略
- 保持 Filebeat 与 Logstash/ES 版本一致或兼容,避免字段结构差异导致解析失败;例如早期版本差异可能引发 host 字段冲突,需要在 Logstash 侧做字段清理或升级对齐版本。
- 统一采集规范:在 filebeat.yml 中使用 fields 与 tags 标记业务来源,便于下游按业务/主机/环境做索引与路由;必要时用 processors(如 add_host_metadata)补充元数据。
- 路径与编码差异:Windows 路径使用如 C:\Logs*.log,Linux 使用 /var/log/*.log;多行日志(如 Java 堆栈)需统一 multiline 策略,避免不同系统日志合并错乱。
快速验证示例
- 目标:Ubuntu 与 Windows 分别采集本地日志,统一输出到 Logstash(示例端口 5044)。
- Ubuntu 侧 filebeat.yml 片段
- filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/syslog
- /var/log/*.log
fields:
env: prod
os: ubuntu
- output.logstash:
hosts: [“logstash.example.com:5044”]
- Windows 侧 filebeat.yml 片段
- filebeat.inputs:
- type: log
enabled: true
paths:
- C:\Logs*.log
fields:
env: prod
os: windows
- output.logstash:
hosts: [“logstash.example.com:5044”]
- 启动与自检
- Ubuntu:filebeat test config -c /etc/filebeat/filebeat.yml -e;systemctl restart filebeat
- Windows:.\filebeat.exe test config -c .\filebeat.yml -e;Start-Service filebeat
- Logstash 侧确认端口 5044 已监听并正确解析事件。