CentOS下Filebeat与Logstash配合使用教程
1. 准备工作
确保CentOS系统已联网,且具备root或sudo权限。本教程基于Elastic Stack 7.x版本(兼容性最佳),需提前安装Java 8及以上环境(Logstash依赖Java运行)。
2. 安装Elastic YUM仓库
Elastic官方提供了YUM仓库,用于便捷安装Filebeat、Logstash等组件。执行以下命令添加仓库:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo tee /etc/yum.repos.d/elasticsearch.repo <<EOF
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.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,需修改以下内容:
4.1 启用日志输入
默认监控/var/log/*.log(系统日志),可根据需求调整路径(如Nginx日志/var/log/nginx/*.log):
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
4.2 设置输出到Logstash
将Filebeat收集的日志发送至Logstash,默认监听localhost:5044(需与Logstash输入端口一致):
output.logstash:
hosts: ["localhost:5044"]
4.3 可选:添加自定义字段(便于后续检索)
为日志事件添加environment(环境)、application(应用)等标签,提升查询效率:
fields:
environment: production
application: myapp
fields_under_root: true # 将自定义字段提升至事件顶层
5. 配置Logstash
Logstash的配置文件需新建在/etc/logstash/conf.d/目录下(推荐),例如创建filebeat.conf:
sudo vi /etc/logstash/conf.d/filebeat.conf
配置文件分为**Input(输入)、Filter(过滤)、Output(输出)**三部分:
5.1 输入配置
接收Filebeat发送的Beats协议数据(端口需与Filebeat输出端口一致):
input {
beats {
port => 5044
}
}
5.2 过滤配置(可选但推荐)
使用Grok插件解析非结构化日志(如Apache/Nginx日志),提取关键字段(如时间、IP、请求方法、状态码等):
filter {
# 解析Apache Common Log Format(需根据实际日志格式调整)
if [fileset][module] == "apache" and [fileset][name] == "access" {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
# 解析时间戳并转换为Elasticsearch支持的格式
date {
match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
}
# 添加地理位置信息(基于客户端IP)
geoip {
source => "clientip"
target => "geoip"
database => "/usr/share/logstash/vendor/geoip/GeoLite2-City.mmdb" # 需下载GeoIP数据库
}
}
# 通用JSON解析(若日志为JSON格式)
else if [message] =~ /^\s*\{.*\}\s*$/ {
json {
source => "message"
target => "parsed_json"
}
}
}
5.3 输出配置
将处理后的日志发送至Elasticsearch,索引名称按日期分割(如filebeat-2025.09.30):
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "filebeat-%{+YYYY.MM.dd}"
manage_template => false # 禁用自动生成模板(可选)
}
# 输出到控制台(调试用,正式环境可注释)
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均处于active (running)状态:
sudo systemctl status filebeat
sudo systemctl status logstash
7.2 查看Filebeat日志
若Filebeat未正常发送数据,可通过以下命令查看日志:
sudo tail -f /var/log/filebeat/filebeat
7.3 查看Logstash日志
若Logstash未正确处理数据,检查其日志:
sudo tail -f /var/log/logstash/logstash-plain.log
7.4 验证Elasticsearch索引
通过Elasticsearch的_cat/indices接口查看是否生成filebeat-*索引:
curl -X GET "localhost:9200/_cat/indices?v"
7.5 使用Kibana查看数据
访问Kibana(默认http://<服务器IP>:5601),进入Dev Tools,执行以下命令查询日志:
GET /filebeat-*/_search
{
"query": {
"match_all": {}
}
}
8. 常见问题排查
8.1 Filebeat无法连接到Logstash
- 检查Logstash是否监听
5044端口:sudo netstat -tulnp | grep 5044 - 确保防火墙允许
5044端口(若开启防火墙):sudo firewall-cmd --add-port=5044/tcp --permanent sudo firewall-cmd --reload
8.2 Logstash无法解析日志
- 检查Grok模式是否匹配日志格式(可使用Grok Debugger在线验证)。
- 调整
date过滤器的match参数,确保与日志中的时间格式一致。
8.3 Elasticsearch索引未生成
- 检查Elasticsearch是否正常运行:
sudo systemctl status elasticsearch - 确认Elasticsearch的
cluster.name与Logstash配置一致(默认均为elasticsearch)。
通过以上步骤,即可完成CentOS下Filebeat与Logstash的配合配置,实现日志的收集、处理与存储。根据实际需求,可进一步优化过滤规则(如添加更多Grok模式)、调整性能参数(如批量发送大小flush_size),或集成Kibana进行可视化分析。
以上就是关于“CentOS Filebeat与Logstash配合使用教程”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm