1. 安装Filebeat
在需要收集远程日志的服务器(或本地服务器)上安装Filebeat。以CentOS为例,使用包管理器安装:
sudo yum install filebeat -y
安装完成后,Filebeat配置文件默认位于/etc/filebeat/filebeat.yml。
2. 配置远程日志源(关键步骤)
要让Filebeat收集远程日志,需通过以下两种方式指定远程日志路径:
filebeat.inputs部分,将paths指向远程服务器的共享目录(如NFS、Samba挂载点)或通过SSHFS挂载的远程路径。例如:filebeat.inputs:
- type: log
enabled: true
paths:
- /mnt/remote_logs/*.log # 假设/mnt/remote_logs是挂载的远程目录
filebeat.inputs指定本地日志路径,再配置output.elasticsearch或output.logstash将日志发送到本地服务器的Elasticsearch/Logstash。例如:# 远程服务器上的filebeat.inputs配置
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/remote_app/*.log # 远程服务器上的日志路径
# 输出到本地服务器的Logstash(假设本地Logstash监听5044端口)
output.logstash:
hosts: ["your_local_server_ip:5044"]
本地服务器需开启Logstash的5044端口接收数据。3. 配置输出目标(Elasticsearch/Logstash)
根据需求选择输出目标,配置对应的连接信息:
output.elasticsearch,指定Elasticsearch服务器地址、端口及认证信息(若启用安全功能):output.elasticsearch:
hosts: ["your_elasticsearch_host:9200"] # 远程Elasticsearch服务器地址
username: "elastic" # 认证用户名(若有)
password: "your_password" # 认证密码(若有)
protocol: "https" # 使用HTTPS加密(推荐)
ssl.verification_mode: "full" # 严格验证SSL证书(生产环境建议)
ssl.certificate_authorities: ["/path/to/ca.crt"] # CA证书路径(自签名证书需指定)
output.logstash,指定Logstash服务器地址及端口:output.logstash:
hosts: ["your_logstash_host:5044"] # 远程Logstash服务器地址
ssl.certificate_authorities: ["/path/to/ca.crt"] # 若Logstash启用SSL,需指定CA证书
注意:Logstash需提前配置好输入插件(如beats输入)以接收Filebeat数据。4. 配置Logstash接收(若使用Logstash)
在Logstash服务器上创建配置文件(如filebeat_remote.conf),添加以下内容:
input {
beats {
port => 5044 # 监听5044端口,接收Filebeat数据
}
}
filter {
# 可选:添加过滤器处理日志(如解析Nginx日志、提取字段)
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" } # 示例:解析Apache日志格式
}
}
output {
elasticsearch {
hosts => ["your_elasticsearch_host:9200"]
index => "remote_logs-%{+yyyy.MM.dd}" # 索引名称格式
}
stdout { codec => rubydebug } # 调试时输出到控制台
}
启动Logstash:
nohup /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/filebeat_remote.conf > /var/log/logstash/filebeat_remote.out &
5. 启动与验证
sudo systemctl start filebeat
sudo systemctl enable filebeat
sudo systemctl status filebeat
sudo journalctl -u filebeat -f
GET /remote_logs-*/_search
{
"query": { "match_all": {} }
}
若返回日志数据,则说明配置成功。6. 安全配置(生产环境必做)
ssl.certificate_authorities、ssl.certificate、ssl.key),确保数据传输加密。username、password),并确保用户拥有对应权限。sudo firewall-cmd --permanent --zone=public --add-port=9200/tcp
sudo firewall-cmd --permanent --zone=public --add-port=5044/tcp
sudo firewall-cmd --reload
```。