首页主机资讯centos filebeat与logstash如何配合

centos filebeat与logstash如何配合

时间2025-12-06 01:40:04发布访客分类主机资讯浏览1029
导读:在 CentOS 上让 Filebeat 与 Logstash 协同工作 架构与端口 Filebeat 部署在需要采集日志的每台主机,负责读取文件并发送到 Logstash 的 Beats 输入端口 5044。 Logstash 监听 5...

在 CentOS 上让 Filebeat 与 Logstash 协同工作

架构与端口

  • Filebeat 部署在需要采集日志的每台主机,负责读取文件并发送到 LogstashBeats 输入端口 5044
  • Logstash 监听 5044,进行解析与加工(如 GrokDate),再输出到 Elasticsearch(常见端口 9200)。
  • 整体链路:Filebeat → Logstash → Elasticsearch → Kibana

安装与准备

  • 安装组件(以 YUM 为例,确保已配置 Elastic 或系统仓库):
    • 安装 Filebeat:sudo yum install filebeat
    • 安装 Logstash:sudo yum install logstash
  • Logstash 与 Filebeat 不在同一台机器,在防火墙放行 TCP 5044
    • sudo firewall-cmd --permanent --zone=public --add-port=5044/tcp
    • sudo 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"]
      
  • 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"
        }
      
      }
          
      
  • 说明
    • 通过 fields.log_type 在 Logstash 中做条件分支,不同日志走不同 Grok 规则。
    • 索引命名可按业务自定义,示例为 nginx-YYYY.MM.dd

启动与验证

  • 启动服务并设置开机自启:
    • sudo systemctl start filebeat & & sudo systemctl enable filebeat
    • sudo systemctl start logstash & & sudo systemctl enable logstash
  • 查看运行状态与日志:
    • sudo systemctl status filebeat
    • sudo systemctl status logstash
    • sudo journalctl -u filebeat -f
    • sudo 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
centos filebeat如何监控系统日志 nginx ssl centos错误日志分析

游客 回复需填写必要信息