总体思路
- 在需要被采集的远程服务器上安装并运行 Filebeat,让它读取本机的日志文件。
- 将事件通过 Logstash 或直接发送到 Elasticsearch;若走 Logstash,可在集中端做过滤、脱敏与路由。
- 在 Kibana 中创建索引模式并可视化查看。
- 安全上建议启用 TLS/SSL 与 认证,避免明文传输与越权访问。
方案一 远程服务器安装 Filebeat 直连 ES 或 Logstash
- 安装 Filebeat(以 CentOS 为例)
- 使用 YUM 安装:sudo yum install filebeat -y
- 配置采集与输出(示例)
- 直连 Elasticsearch
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
fields:
type: remote_nginx
output.elasticsearch:
hosts: ["es.example.com:9200"]
protocol: https
ssl.verification_mode: full
ssl.certificate_authorities: ["/path/to/ca.crt"]
username: "filebeat_writer"
password: "YOUR_PASSWORD"
index: "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}"
- 或输出到 Logstash
output.logstash:
hosts: ["logstash.example.com:5044"]
- 启动与验证
- 启动:sudo systemctl start filebeat && sudo systemctl enable filebeat
- 查看状态与日志:sudo systemctl status filebeat、sudo journalctl -u filebeat -f
- 说明
- 若 Elasticsearch 使用自签名证书,开发环境可临时将 ssl.verification_mode 设为 none,生产环境应使用 full 并配置 CA/客户端证书。
方案二 集中式 Logstash 接收多台远程 Filebeat
- 远程服务器 Filebeat 配置(输出到集中 Logstash)
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
fields:
service: app01
env: prod
output.logstash:
hosts: ["logstash.example.com:5044"]
- 集中端 Logstash 配置(示例)
input {
beats {
port => 5044
}
}
filter {
# 可在此做 grok、mutate、geoip 等处理
}
output {
elasticsearch {
hosts => ["es.example.com:9200"]
index => "%{[fields][service]}-%{+YYYY.MM.dd}"
user => "es_writer"
password => "YOUR_PASSWORD"
}
stdout { codec => rubydebug } # 调试用
}
- 运行与验证
- Logstash 启动:bin/logstash -f logstash.conf
- 在 Kibana 创建索引模式(如 filebeat-* 或按服务名前缀),开始检索与可视化。
安全与运维要点
- 启用 TLS/SSL:生产环境将 ssl.verification_mode 设为 full,提供 CA 证书;必要时配置客户端证书与密钥。
- 启用 认证:为 Elasticsearch/Logstash 配置 用户名/密码 或 API Key,并在 Filebeat 输出中设置。
- 资源与稳定性:为 Filebeat 配置合适的 close_inactive、scan_frequency 与 backoff 参数,避免频繁打开/关闭文件句柄。
- 多租户与路由:使用 fields/tags 标记来源,在 Logstash 中按字段分流到不同索引或做差异化处理。
- 模块与解析:对常见日志(如 Nginx、MySQL、System)启用 Filebeat 模块 并使用内置 Ingest Pipeline 解析,减少在 Logstash 的复杂配置。
快速验证步骤
- 在远程服务器确认 Filebeat 已运行:sudo systemctl status filebeat;实时看日志:sudo journalctl -u filebeat -f。
- 在 Elasticsearch 或 Kibana 检查是否出现以 filebeat-* 或自定义前缀的索引与数据。
- 若有错误,优先检查输出目标地址、端口、证书路径与账号权限是否正确。