centos filebeat与logstash如何配合
导读:在 CentOS 上让 Filebeat 与 Logstash 协同工作 架构与端口 Filebeat 部署在需要采集日志的每台主机,负责读取文件并发送到 Logstash 的 Beats 输入端口 5044。 Logstash 监听 5...
在 CentOS 上让 Filebeat 与 Logstash 协同工作
架构与端口
- Filebeat 部署在需要采集日志的每台主机,负责读取文件并发送到 Logstash 的 Beats 输入端口 5044。
- Logstash 监听 5044,进行解析与加工(如 Grok、Date),再输出到 Elasticsearch(常见端口 9200)。
- 整体链路:Filebeat → Logstash → Elasticsearch → Kibana。
安装与准备
- 安装组件(以 YUM 为例,确保已配置 Elastic 或系统仓库):
- 安装 Filebeat:
sudo yum install filebeat - 安装 Logstash:
sudo yum install logstash
- 安装 Filebeat:
- 如 Logstash 与 Filebeat 不在同一台机器,在防火墙放行 TCP 5044:
sudo firewall-cmd --permanent --zone=public --add-port=5044/tcpsudo firewall-cmd --reload
- 注意:Logstash 基于 Java,需预先安装 JDK 8/11/15(按所用版本要求)。
配置步骤
- Filebeat 配置(示例:/etc/filebeat/filebeat.yml)
- 采集 Nginx 访问与错误日志,并打上自定义类型,便于 Logstash 分流处理:
filebeat.inputs: - type: log enabled: true paths: - /var/log/nginx/access.log - /var/log/nginx/error.log fields: log_type: nginx-access # 用于 Logstash 条件判断 fields_under_root: false - type: log enabled: true paths: - /var/log/nginx/error.log fields: log_type: nginx-error fields_under_root: false output.logstash: hosts: ["logstash_host:5044"]
- 采集 Nginx 访问与错误日志,并打上自定义类型,便于 Logstash 分流处理:
- Logstash 配置(示例:/etc/logstash/conf.d/filebeat.conf)
- 接收 Beats 数据,按类型解析,写入按日命名的索引:
input { beats { port => 5044 } } filter { if [fields][log_type] == "nginx-access" { grok { match => { "message" => "%{ COMBINEDAPACHELOG} " } } date { match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ] } } if [fields][log_type] == "nginx-error" { grok { match => { "message" => "%{ ERRORLOG} " } } date { match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ] } } } output { elasticsearch { hosts => ["elasticsearch_host:9200"] index => "nginx-%{ +YYYY.MM.dd} " # 如启用安全认证,补充: # user => "elastic" # password => "your_password" } }
- 接收 Beats 数据,按类型解析,写入按日命名的索引:
- 说明
- 通过 fields.log_type 在 Logstash 中做条件分支,不同日志走不同 Grok 规则。
- 索引命名可按业务自定义,示例为 nginx-YYYY.MM.dd。
启动与验证
- 启动服务并设置开机自启:
sudo systemctl start filebeat & & sudo systemctl enable filebeatsudo systemctl start logstash & & sudo systemctl enable logstash
- 查看运行状态与日志:
sudo systemctl status filebeatsudo systemctl status logstashsudo journalctl -u filebeat -fsudo journalctl -u logstash -f
- 验证数据是否写入 Elasticsearch:
- 查看索引:
curl -X GET "localhost:9200/_cat/indices?v" - 查询文档:
curl -X GET "localhost:9200/filebeat-*/_search?pretty"(如启用了安全认证,请在命令中加入 -u elastic:password)
- 查看索引:
常见问题与优化
- 配置语法:Filebeat 使用 YAML,注意缩进与冒号后的空格;修改配置后先语法校验再重启。
- 多实例与管道:Logstash 可通过 pipelines.yml 管理多个管道;单个实例也可在 /etc/logstash/conf.d/ 下放置多个 .conf 文件并按需包含。
- JVM 资源:在 config/jvm.options 中合理设置 -Xms/-Xmx(如 -Xms512m -Xmx512m),避免 OOM。
- 多行日志:遇到 Java 堆栈等多行日志,在 Filebeat 使用 multiline 合并后再发送到 Logstash,减少解析错误。
- 索引与模板:生产建议统一索引前缀与 ILM 策略;如使用内置模板,可在输出中指定 template.name / template.path / template.overwrite。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos filebeat与logstash如何配合
本文地址: https://pptw.com/jishu/765401.html
