CentOS Filebeat与Logstash如何联动
导读:在 CentOS 上让 Filebeat 与 Logstash 协同工作 一 架构与端口约定 Filebeat 负责采集本地日志文件,作为轻量采集器将数据发送到 Logstash 的 Beats 输入插件(默认端口 5044)。 Log...
在 CentOS 上让 Filebeat 与 Logstash 协同工作
一 架构与端口约定
- Filebeat 负责采集本地日志文件,作为轻量采集器将数据发送到 Logstash 的 Beats 输入插件(默认端口 5044)。
- Logstash 在 5044 端口监听 Beats 数据,进行解析与加工(如 Grok、Date、mutate 等),再输出到 Elasticsearch 或标准输出用于调试。
- 常见输出索引命名:filebeat-%{ +YYYY.MM.dd} 或按业务字段拆分如 %{ [index_prefix]} -%{ +YYYY.MM.dd} 。
二 安装与目录
- 在 CentOS 上可直接通过 YUM 安装(示例命令,需具备对应仓库权限):
- 安装 Filebeat:
sudo yum install filebeat - 安装 Logstash:
sudo yum install logstash
- 安装 Filebeat:
- 常用配置路径:
- Filebeat:/etc/filebeat/filebeat.yml
- Logstash 管道配置:/etc/logstash/conf.d/*.conf
- 服务管理:
- 启动/开机自启:
sudo systemctl start|enable filebeat、sudo systemctl start|enable logstash - 查看日志:
sudo journalctl -u filebeat -f、sudo journalctl -u logstash -f。
- 启动/开机自启:
三 最小可用配置示例
- Filebeat 配置(/etc/filebeat/filebeat.yml):收集系统日志并发送到本机 Logstash
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
output.logstash:
hosts: ["localhost:5044"]
- Logstash 配置(/etc/logstash/conf.d/filebeat.conf):接收 Beats 数据并写入 ES
input {
beats {
port =>
5044
}
}
filter {
# 示例:解析 Apache 访问日志;其他日志请替换为合适的 grok 模式
grok {
match =>
{
"message" =>
"%{
COMBINEDAPACHELOG}
" }
}
date {
match =>
[ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
}
}
output {
elasticsearch {
hosts =>
["localhost:9200"]
index =>
"filebeat-%{
+YYYY.MM.dd}
"
}
}
- 启动顺序建议:先启动 Logstash(确保 5044 监听正常),再启动 Filebeat。
四 验证与常见问题
- 服务与连通性检查
- 状态:
sudo systemctl status filebeat、sudo systemctl status logstash - 日志:
sudo journalctl -u filebeat -f、sudo journalctl -u logstash -f - 连通性(在 Filebeat 主机上):
nc -vz < logstash_ip> 5044
- 状态:
- Elasticsearch 数据校验
- 索引列表:
curl -X GET "localhost:9200/_cat/indices?v" - 查询样本:
curl -X GET "localhost:9200/filebeat-*/_search?pretty"
- 索引列表:
- 调试技巧
- 临时将 Logstash 输出改为
stdout { codec => rubydebug }观察事件结构。 - 使用 Filebeat 自检:
filebeat test config、filebeat test output(可快速发现配置与输出连通性问题)。
- 临时将 Logstash 输出改为
五 进阶用法
- 多项目索引拆分(按 Filebeat 自定义字段路由)
- Filebeat 增加字段:
filebeat.inputs: - type: log enabled: true paths: - /opt/logs/app1/*.log fields: project: "app1" - type: log enabled: true paths: - /opt/logs/app2/*.log fields: project: "app2" fields_under_root: true output.logstash: hosts: ["logstash:5044"] - Logstash 按字段设置索引前缀:
input { beats { port => 5044 } } filter { if [project] == "app1" { mutate { add_field => { "index_prefix" => "filebeat-app1" } } } else if [project] == "app2" { mutate { add_field => { "index_prefix" => "filebeat-app2" } } } else { mutate { add_field => { "index_prefix" => "filebeat-default" } } } } output { elasticsearch { hosts => ["elasticsearch:9200"] index => "%{ [index_prefix]} -%{ +YYYY.MM.dd} " } }
- Filebeat 增加字段:
- 多行日志(如 Java 堆栈)
- Filebeat 片段:
- type: log enabled: true paths: - /apps/usr/appdata/logs/*.log multiline.pattern: '^[[:space:]]+(at|\.{ 3} )[[:space:]]' multiline.negate: false multiline.match: after
- Filebeat 片段:
- 安全与网络
- 若跨主机部署,开放 Logstash 主机 5044/TCP 入站;生产环境建议启用 TLS 与 认证(在 Beats 与 Logstash 双方配置证书与密码/密钥)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Filebeat与Logstash如何联动
本文地址: https://pptw.com/jishu/776799.html
