ETJava Beta | Java    注册   登录
  • 搜索:
  • Filebeat

    发表于      阅读(1)     博客类别:Crawler     转自:https://www.cnblogs.com/2678066103hs/p/18425482
    如有侵权 请联系我们删除  (页面底部联系我们)  

    Filebeat

    简介

    Filebeat用于转发和集中日志数据的轻量级传送程序。作为服务器上的代理安装,Filebeat监视指定的位置文件或位置,收集日志事件,并将他们转发到Elasticsearch 或Logstash进行索引。

    架构图

    安装Filebeat

    下载并安装

    wget  https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.0.1-x86_64.rpm
    yum install ./filebeat-6.0.1-x86_64.rpm
    

    配置

    修改Filebeat配置文件

    filebeat.yml

    vim /etc/filebeat/filebeat.yml                     # 主配置文件
    \- type: log                                       # 文档类型
    paths:
    \- /var/log/httpd/access.log*                     # 从哪里读入数据# 输出在elasticsearch与logstash二选一即可
    output.elasticsearch:                           #将数据输出到Elasticsearch。与下面的logstash二者选一
     hosts: ["localhost:9200"]
    output.logstash:                               # 将数据传送到logstash,要配置logstash使用beats接收
     hosts: ["172.18.68.14:5044"]
    

    定义输入日志文件路径

    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /var/log/*.log
    

    在这个例子中,获取在/var/log/*.log路径下的所有文件作为输入,这就意味着Filebeat将获取/var/log目录下所有以.log结尾的文件。

    为了从预定义的子目录级别下抓取所有文件,可以使用以下模式,:/var/log/*/*.log.这个将抓取/var/log目录下的所有以.log结尾的文件

    目前配置了这样的目录结构,那么只会抓取到2.log和 3.log,而不会抓到4.log和1.log

    发送到Elasticsearch

    如果你发送输出目录到Elasticsearch(并且不用Logstash),那么设置ip地址和端口以便能够找到Elasticsearch

    output.elasticsearch:
        hosts: ["192.168.1.42:9200"]
    

    如果打算用kibana仪表盘

    setup.kibana:
          host: "localhost:5601"
    
    
    output.elasticsearch:
          hosts: ["myEShost:9200"]
          username: "filebeat_internal"
          password: "{pwd}" 
    setup.kibana:
          host: "mykibanahost:5601"
          username: "my_kibana_user"  
          password: "{pwd}"
    

    配置filebeat以使用Logstash

    如果想使用Logstash对filebeat收集的数据进行额外处理,那么你需要将filebeat配置为使用Logstash。

    output.logstash:
          hosts: ["127.0.0.1:5044"]
    

    完整配置

    #=========================== Filebeat inputs ==============
    filebeat.inputs:
    
    - type: log
    
      enabled: true
    
      paths:
        - /var/log/*.log
    
    #============================== Dashboards ===============
    setup.dashboards.enabled: false
    
    #============================== Kibana ==================
    setup.kibana:
    	host: "192.168.101.5:5601"
    
    #-------------------------- Elasticsearch output ---------
    output.elasticsearch:
      	hosts: ["localhost:9200"]
    

    启动Filebeat

    systemctl start filebeat
    

    配置Logstash接收来自FIlebeat采集的数据

    vim /etc/logstash/conf.d/test.conf
    input {
       beats {
               port => 5044                             # 监听5044用于接收Filebeat传来数据
       }
    }
    filter {
     grok {
    match => {
     "message" => "%{COMBINEDAPACHELOG}"                 # 匹配HTTP的日志
    }
    remove_field => "message"                             # 不显示原信息,仅显示匹配后
     }
    }
    output {
    elasticsearch {
    hosts => ["http://172.18.68.11:9200","http://172.18.68.12:9200","http://172.18.68.13:9200"] # 集群IP
    index => "logstash-%{+YYYY.MM.dd}"
    action => "index"
    document_type => "apache_logs"
    }
    }
    

    启动Logstash

     /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/test.conf
    

    模拟日志访问

    通过curl命令来模拟客户访问,生成访问日志

    curl 127.0.0.1
    curl 172.18.68.51
    curl 172.18.68.52
    curl 172.18.68.53
    

    验证信息

    清除之前实验的旧数据(删除时要在对话框中输入删除),然后可以看到filebeat采集数据经过Logtash过滤再送给Elasticsearch的数据。