确保CentOS系统已更新至最新版本,并安装了wget、rpm等基础工具。若未安装,可通过yum install -y wget rpm命令安装。
为确保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
通过YUM仓库安装最新稳定版本的Filebeat和Logstash:
sudo yum install -y filebeat logstash
Filebeat的配置文件位于/etc/filebeat/filebeat.yml,需修改以下核心参数:
/var/log/*.log),可根据需求调整为应用日志路径(如/opt/app/logs/*.log)。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"]
Logstash的配置文件需存放在/etc/logstash/conf.d/目录下(推荐使用单独文件,如filebeat.conf),配置分为输入、过滤、输出三部分:
beats插件接收Filebeat发送的数据,端口需与Filebeat配置一致(5044)。grok插件解析非结构化日志(如Apache/Nginx日志),date插件统一时间格式。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 # 以易读格式显示数据
}
}
配置完成后,启动Filebeat和Logstash服务,并设置为开机自启:
# 启动Filebeat
sudo systemctl start filebeat
sudo systemctl enable filebeat
# 启动Logstash
sudo systemctl start logstash
sudo systemctl enable logstash
确保Filebeat和Logstash均处于运行状态:
sudo systemctl status filebeat
sudo systemctl status logstash
若状态显示为active (running),则表示服务启动成功。
通过日志确认Filebeat是否成功发送数据至Logstash:
sudo tail -f /var/log/filebeat/filebeat
若看到Successfully sent batch of events to logstash字样,说明连接正常。
检查Logstash是否接收到数据并进行处理:
sudo tail -f /var/log/logstash/logstash-plain.log
若看到Pipeline started和Received event等字样,表示数据传输正常。
通过Elasticsearch的_cat/indices接口查看是否生成了Filebeat索引:
curl -X GET "localhost:9200/_cat/indices?v"
若看到类似filebeat-2025.11.05的索引,说明数据已成功存储至Elasticsearch。
Connection refused。netstat -tulnp | grep 5044确认端口是否监听;若Logstash部署在远程服务器,需确保防火墙开放5044端口(firewall-cmd --add-port=5044/tcp --permanent; firewall-cmd --reload)。message字段仍为原始日志)。grok模式是否匹配日志格式(可使用Grok Debugger测试模式);确保date插件的match字段与日志中的时间格式一致。pipeline.workers参数,默认等于CPU核心数);调整批处理大小(pipeline.batch.size,默认125);使用Redis/Kafka作为缓冲层(在Logstash前添加Redis输入插件)。通过以上步骤,即可在CentOS上完成Filebeat与Logstash的联用配置,实现日志的收集、处理与存储。根据实际需求,可调整输入路径、过滤规则及输出目标,构建更复杂的日志处理管道。