CentOS上Filebeat与Logstash联用指南
1. 前提准备
确保CentOS系统已更新至最新版本,并安装了wget、rpm等基础工具。若未安装,可通过yum install -y wget rpm命令安装。
2. 安装Elastic官方YUM仓库
为确保Filebeat与Logstash版本兼容,需先添加Elastic官方YUM仓库:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo tee /etc/yum.repos.d/elasticsearch.repo <<EOF
[elasticsearch-8.x]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
3. 安装Filebeat与Logstash
通过YUM仓库安装最新稳定版本的Filebeat和Logstash:
sudo yum install -y filebeat logstash
4. 配置Filebeat
Filebeat的配置文件位于/etc/filebeat/filebeat.yml,需修改以下核心参数:
- 定义输入源:收集系统日志(
/var/log/*.log),可根据需求调整为应用日志路径(如/opt/app/logs/*.log)。 - 设置输出目标:将日志发送至本地的Logstash服务(默认端口
5044),若Logstash部署在其他服务器,需替换为对应IP。
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log # 监控所有.log文件
exclude_files: ['\.gz$'] # 排除压缩文件
output.logstash:
hosts: ["localhost:5044"] # Logstash地址
# 若启用SSL加密,需取消以下注释并配置证书路径
# ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
5. 配置Logstash
Logstash的配置文件需存放在/etc/logstash/conf.d/目录下(推荐使用单独文件,如filebeat.conf),配置分为输入、过滤、输出三部分:
- 输入:使用
beats插件接收Filebeat发送的数据,端口需与Filebeat配置一致(5044)。 - 过滤:通过
grok插件解析非结构化日志(如Apache/Nginx日志),date插件统一时间格式。 - 输出:将处理后的数据发送至Elasticsearch(
localhost:9200),并按日期生成索引(如filebeat-2025.11.05)。
input {
beats {
port => 5044 # 监听Filebeat的端口
# 若启用SSL,需取消以下注释并配置证书
# ssl => true
# ssl_certificate => "/etc/logstash/certs/logstash.crt"
# ssl_key => "/etc/logstash/certs/logstash.key"
}
}
filter {
# 示例:解析Apache Common Log格式
if [fileset][module] == "apache" and [fileset][name] == "access" {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
date {
match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"] # 解析日志中的时间戳
target => "@timestamp" # 覆盖默认的@timestamp字段
}
geoip {
source => "clientip" # 根据客户端IP添加地理位置信息
target => "geoip"
}
}
# 示例:清理冗余字段
mutate {
remove_field => ["message", "headers", "agent"] # 删除不必要的字段
}
}
output {
elasticsearch {
hosts => ["localhost:9200"] # Elasticsearch地址
index => "filebeat-%{+YYYY.MM.dd}" # 动态生成索引名
# 若启用认证,需取消以下注释并配置账号密码
# user => "elastic"
# password => "your_password"
}
# 调试时输出到控制台(生产环境建议关闭)
stdout {
codec => rubydebug # 以易读格式显示数据
}
}
6. 启动并启用服务
配置完成后,启动Filebeat和Logstash服务,并设置为开机自启:
# 启动Filebeat
sudo systemctl start filebeat
sudo systemctl enable filebeat
# 启动Logstash
sudo systemctl start logstash
sudo systemctl enable logstash
7. 验证配置
7.1 检查服务状态
确保Filebeat和Logstash均处于运行状态:
sudo systemctl status filebeat
sudo systemctl status logstash
若状态显示为active (running),则表示服务启动成功。
7.2 查看Filebeat日志
通过日志确认Filebeat是否成功发送数据至Logstash:
sudo tail -f /var/log/filebeat/filebeat
若看到Successfully sent batch of events to logstash字样,说明连接正常。
7.3 查看Logstash日志
检查Logstash是否接收到数据并进行处理:
sudo tail -f /var/log/logstash/logstash-plain.log
若看到Pipeline started和Received event等字样,表示数据传输正常。
7.4 验证Elasticsearch索引
通过Elasticsearch的_cat/indices接口查看是否生成了Filebeat索引:
curl -X GET "localhost:9200/_cat/indices?v"
若看到类似filebeat-2025.11.05的索引,说明数据已成功存储至Elasticsearch。
8. 常见问题排查
8.1 连接失败
- 问题:Filebeat无法连接到Logstash,日志显示
Connection refused。 - 解决:检查Logstash是否启动,
netstat -tulnp | grep 5044确认端口是否监听;若Logstash部署在远程服务器,需确保防火墙开放5044端口(firewall-cmd --add-port=5044/tcp --permanent; firewall-cmd --reload)。
8.2 数据未处理
- 问题:Logstash接收到数据但未解析(如
message字段仍为原始日志)。 - 解决:检查Filter配置中的
grok模式是否匹配日志格式(可使用Grok Debugger测试模式);确保date插件的match字段与日志中的时间格式一致。
8.3 性能瓶颈
- 问题:Logstash处理速度慢,导致数据积压。
- 解决:增加Logstash工作线程(
pipeline.workers参数,默认等于CPU核心数);调整批处理大小(pipeline.batch.size,默认125);使用Redis/Kafka作为缓冲层(在Logstash前添加Redis输入插件)。
通过以上步骤,即可在CentOS上完成Filebeat与Logstash的联用配置,实现日志的收集、处理与存储。根据实际需求,可调整输入路径、过滤规则及输出目标,构建更复杂的日志处理管道。
以上就是关于“CentOS上Filebeat与Logstash联用指南”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm