Filebeat是轻量级日志收集工具,适用于CentOS系统采集特定日志并发送至Elasticsearch、Logstash等目标。以下是详细操作步骤:
在CentOS上,推荐通过yum包管理器安装Filebeat(需提前配置Elastic官方YUM仓库):
# 添加Elastic YUM仓库(若未添加)
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo tee /etc/yum.repos.d/elasticsearch.repo <<EOF
[elasticsearch-7.x]
name=Elastic 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
# 安装Filebeat
sudo yum install -y filebeat
Filebeat的主配置文件位于/etc/filebeat/filebeat.yml,需修改filebeat.inputs部分指定特定日志路径,并可根据需求添加过滤或增强配置。
修改filebeat.inputs,将paths设置为需要采集的日志文件路径(支持通配符*)。例如:
filebeat.inputs:
- type: log # 输入类型为日志
enabled: true # 启用该输入
paths:
- /var/log/nginx/access.log # 采集Nginx访问日志
- /var/log/nginx/error.log # 采集Nginx错误日志
- /var/log/myapp/*.log # 采集myapp目录下所有.log文件
exclude_files排除不需要的文件(如备份文件):exclude_files: ['\.bak$', '\.tmp$'] # 排除.bak和.tmp结尾的文件
fields添加业务标签(如环境、应用名称),便于后续检索:fields:
environment: production
application: myapp
fields_under_root: true # 将自定义字段提升至事件顶层
decode_json_fields处理器提取字段:processors:
- decode_json_fields:
fields: ["message"] # 从message字段提取JSON
target: "" # 提取的字段存入根对象(覆盖原message)
overwrite_keys: true # 覆盖同名字段
默认情况下,Filebeat将日志发送至Elasticsearch。修改output.elasticsearch部分,指定Elasticsearch地址和索引名称:
output.elasticsearch:
hosts: ["localhost:9200"] # Elasticsearch地址(若为远程服务器,替换为IP/域名)
index: "myapp-logs-%{+yyyy.MM.dd}" # 动态生成日期索引(如myapp-logs-2025.11.09)
若需发送至Logstash(需提前安装并启动Logstash),可配置output.logstash:
output.logstash:
hosts: ["localhost:5044"] # Logstash监听端口(默认5044)
sudo systemctl start filebeat # 启动Filebeat
sudo systemctl enable filebeat # 设置开机自启
sudo systemctl status filebeat # 查看服务状态(若显示“active (running)”则为正常)
sudo tail -f /var/log/filebeat/filebeat # 实时查看Filebeat运行日志(排查采集问题)
curl命令查询索引数据:curl -XGET 'localhost:9200/myapp-logs-*/_search?pretty' # 查询最近1天的myapp日志
root用户运行Filebeat:sudo chown root:root /var/log/nginx/*.log # 修改日志文件所有者
sudo chmod 644 /var/log/nginx/*.log # 设置可读权限
filebeat test config命令测试配置文件语法:sudo filebeat test config -e # -e参数输出错误日志到终端
通过以上步骤,即可完成CentOS系统上特定日志的采集。根据实际需求,可调整paths、processors等配置,实现更灵活的日志收集和处理。