在 CentOS 上部署 Filebeat 与 Logstash 的实用指南
一 架构与端口
- Filebeat 部署在需要采集日志的节点,负责读取文件并发送到 Logstash 的 Beats 输入端口 5044。
- Logstash 监听 5044,在 Pipeline 的 filter 阶段进行解析与丰富,再输出到 Elasticsearch(常见端口 9200)。
- 如需在 Kibana 中查看,可部署 Kibana 并连接到同一 Elasticsearch。上述分工与端口是 CentOS 上最常见、最稳妥的组合。
二 安装与目录
- 使用 YUM 安装(示例命令,版本号可按需调整):
- 安装 Filebeat:
sudo yum install filebeat
- 安装 Logstash:
sudo yum install logstash
- 常用配置与数据目录:
- Filebeat 主配置:/etc/filebeat/filebeat.yml
- Logstash 配置目录:/etc/logstash/conf.d/(建议将管道配置放在此目录)
- Logstash 主配置:/etc/logstash/logstash.yml;运行时数据:/var/lib/logstash;日志:/var/log/logstash
- 启动与管理:
- 启动/开机自启:
sudo systemctl start filebeat && sudo systemctl enable filebeat
- 启动/开机自启:
sudo systemctl start logstash && sudo systemctl enable logstash
- 注意:Logstash 基于 Java,需确保已安装 JDK(如 OpenJDK)。
三 最小可用配置
- Filebeat 配置(/etc/filebeat/filebeat.yml):收集系统日志并输出到 Logstash
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
output.logstash:
hosts: ["127.0.0.1:5044"]
- Logstash 配置(/etc/logstash/conf.d/filebeat.conf):接收 Beats、解析并写入 ES
input {
beats {
port => 5044
}
}
filter {
# 示例:解析常见 Apache 访问日志;不匹配将保持原样
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
date {
match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
}
}
output {
elasticsearch {
hosts => ["http://127.0.0.1:9200"]
index => "filebeat-%{+YYYY.MM.dd}"
}
}
- 说明:以上为最简可用组合;生产环境可按需扩展 filter 与 output。
四 启动与验证
- 语法检查与启动 Logstash:
- 测试配置:
/usr/share/logstash/bin/logstash -t -f /etc/logstash/conf.d/filebeat.conf
- 启动服务:
sudo systemctl start logstash
- 启动 Filebeat:
sudo systemctl start filebeat
- 查看服务状态与日志:
- 状态:
sudo systemctl status filebeat、sudo systemctl status logstash
- 日志:
sudo journalctl -u filebeat -f、sudo journalctl -u logstash -f
- 验证数据落库(ES 与索引):
- 查看索引:
curl -X GET "localhost:9200/_cat/indices?v"
- 查询文档:
curl -X GET "localhost:9200/filebeat-*/_search?pretty"
- 可选:在 Kibana 中连接 Elasticsearch,创建索引模式 filebeat-* 进行可视化。
五 常见问题与优化
- 多行日志(如 Java 堆栈):在 Filebeat 使用 multiline 将堆栈合并为单事件,避免被拆行解析。
- 按类型分流处理:在 Filebeat 用 fields 打标签,在 Logstash 用 if [fields][log_type] == “xxx” 做差异化 grok/date。
- 性能与可靠性:
- Filebeat 可配置 load balancing 输出、内部队列与 shutdown_timeout;
- 首次采集大文件时谨慎使用 tail_files: true,避免文件轮转导致首条丢失。
- 调试技巧:Logstash 临时增加 stdout { codec => rubydebug } 输出到控制台,快速定位解析问题。
- 安全建议:跨主机传输时启用 SSL/TLS;为 Logstash 配置合适的 JVM 堆(jvm.options)。